算法市场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)")
目录
相关文章
|
搜索推荐 算法 Shell
【算法tips】面试官:说说常见的排序算法。—— 巧记十种排序算法名称
【算法tips】面试官:说说常见的排序算法。—— 巧记十种排序算法名称
537 2
|
6月前
|
机器学习/深度学习 分布式计算 算法
Spark中的机器学习库MLlib是什么?请解释其作用和常用算法。
Spark中的机器学习库MLlib是什么?请解释其作用和常用算法。
112 0
|
1月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
63 0
|
24天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
分布式计算 算法 大数据
大数据Spark MLlib推荐算法
大数据Spark MLlib推荐算法
257 0
|
分布式计算 算法 Java
ALS算法 java spark rdd简单实现
ALS算法 java spark rdd简单实现
129 0
|
分布式计算 算法 搜索推荐
Java编写的Spark ALS协同过滤推荐算法的源代码能共享一下
Java编写的Spark ALS协同过滤推荐算法的源代码能共享一下
118 0
|
机器学习/深度学习 人工智能 算法
从频度引发的c语言多重for循环乃至编写算法思路的思考
首先需要声明的是,笔者是一名有C语言基础并正在为考研而复习数据结构的大学生,本篇文章中的for循环代码来自于清华大学严蔚敏教授出版的《数据结构》。 本篇博客适用于初学者理解C语言for循环,多重for循环、数据结构频度、线性代数矩阵等知识点。 整篇文章从频度开始,讲述两个矩阵相乘算法,最后讲述整个算法的设计原理
203 4
从频度引发的c语言多重for循环乃至编写算法思路的思考
|
分布式计算 Hadoop 大数据
Spark 原理_总结介绍_案例编写 | 学习笔记
快速学习 Spark 原理_总结介绍_案例编写
117 0
Spark 原理_总结介绍_案例编写 | 学习笔记
|
分布式计算 大数据 Spark
Spark 入门_独立应用编写|学习笔记
快速学习 Spark 入门_独立应用编写
Spark 入门_独立应用编写|学习笔记
下一篇
无影云桌面