算法市场Spark算法编写Tips

简介: 随着Spark的流行,越来越多的同学在使用Spark编写算法使用。集团Spark团队推出了非常好用的Spark On ODPS 客户端 https://yuque.antfin-inc.com/amr/alispark/vrl4tz 给大家使用,在编写Spark的过程中也踩了一些坑,正好记录一些Tips供大家参考, ### 读入参数 + local模式传递参数 + 使用loc

随着Spark的流行,越来越多的同学在使用Spark编写算法使用。集团Spark团队推出了非常好用的Spark On ODPS 客户端 https://yuque.antfin-inc.com/amr/alispark/vrl4tz 给大家使用,在编写Spark的过程中也踩了一些坑,正好记录一些Tips供大家参考,

读入参数

  • local模式传递参数

    • 使用local模式提交的时候我们一般使用./bin/spark-submit 命令。对该命令打出Help后发现没有关于参数传递的说明。不过local模式和Client模式都统一了参数的输入方式,直接在命令后接上 参数=值 的这种键值对就可以被Spark代码接收到。
    • 比如这是一个Spark2.0 local模式启动示例

      ./bin/spark-submit --class 入口函数 jar包 参数1=值1 参数2=值2 参数3=值3
  • Spark 2.0读入参数

    • Spark中参数是作为main函数的args传入的,但是拿到的都是参数=值的形式,可以用下面的函数将其处理成HashMap形式在后面的程序使用

        public static final String delimiter = "=";
      
      /**
       * 转化输入参数
       * @param args
       * @return
       */
      public static Map<String, String> getMainArgs(String args[]) {
        System.out.println("============Parameter================");
        Map<String,String> params = new HashMap<>();
        for(String arg:args){
            String ss [] = arg.trim().split(delimiter);
            params.put(ss[0],ss[1]);
            System.out.println(ss[0]+":"+ss[1]);
        }
        System.out.println("=====================================");
        return params;
      }
  • PySpark读入参数

    • PySpark中参数也是作为命令的一部分传入,但是在传入的过程中可能会参入其他的内容,需要对其他的格式做一个区分。

        # 处理输入参数
      arg_dict = {}
      for arg in sys.argv:
        argParam = arg.split('=', 1)
        if len(argParam) > 1:
            arg_dict[argParam[0]] = argParam[1]

读写ODPS

  • Spark 2.0

    • 使用Spark Session直接运行SQL语句

      SparkSession sparkSession = SparkSession.builder().appName("spark sql test").getOrCreate();
      sparkSession.sql("CREATE TABLE IF NOT EXISTS " + outputProjectName + "." + outputTableName+"(id STRING,content STRING,hash_value STRING)");
  • PySpark

    • 使用Spark Session直接运行SQL语句

      spark = SparkSession.builder.appName("spark sql").getOrCreate()
      spark.sql("CREATE TABLE IF NOT EXISTS " + OUTPUT_TABLE + "(id STRING,content STRING)")
目录
相关文章
|
7月前
|
搜索推荐 算法 Shell
【算法tips】面试官:说说常见的排序算法。—— 巧记十种排序算法名称
【算法tips】面试官:说说常见的排序算法。—— 巧记十种排序算法名称
485 2
|
机器学习/深度学习 人工智能 算法
从频度引发的c语言多重for循环乃至编写算法思路的思考
首先需要声明的是,笔者是一名有C语言基础并正在为考研而复习数据结构的大学生,本篇文章中的for循环代码来自于清华大学严蔚敏教授出版的《数据结构》。 本篇博客适用于初学者理解C语言for循环,多重for循环、数据结构频度、线性代数矩阵等知识点。 整篇文章从频度开始,讲述两个矩阵相乘算法,最后讲述整个算法的设计原理
158 4
从频度引发的c语言多重for循环乃至编写算法思路的思考
|
分布式计算 Hadoop 大数据
Spark 原理_总结介绍_案例编写 | 学习笔记
快速学习 Spark 原理_总结介绍_案例编写
91 0
Spark 原理_总结介绍_案例编写 | 学习笔记
|
分布式计算 大数据 Spark
Spark 入门_独立应用编写|学习笔记
快速学习 Spark 入门_独立应用编写
88 0
Spark 入门_独立应用编写|学习笔记
|
机器学习/深度学习 人工智能 算法
一文看懂人工智能里的算法(4个特征+3个算法选择 Tips)
人工智能有三驾马车:数据、算法、算力。本文重点介绍算法相关的知识。
266 0
一文看懂人工智能里的算法(4个特征+3个算法选择 Tips)
|
机器学习/深度学习 存储 人工智能
DeepMind发布Acme,高效分布式强化学习算法框架轻松编写RL智能体
DeepMind 本周发布了一个强化学习优化框架Acme,可以让AI驱动的智能体在不同的执行规模上运行,从而简化强化学习算法的开发过程。
382 0
DeepMind发布Acme,高效分布式强化学习算法框架轻松编写RL智能体
|
机器学习/深度学习 SQL 存储
基于Spark的机器学习实践 (八) - 分类算法
基于Spark的机器学习实践 (八) - 分类算法
334 0
|
机器学习/深度学习 人工智能 分布式计算
基于Spark的机器学习实践 (七) - 回归算法
基于Spark的机器学习实践 (七) - 回归算法
371 0