如何在本地使用scala或python运行Spark程序
 
包含两个部分:
  1. 本地scala语言编写程序,并编译打包成jar,在本地运行。
  2. 本地使用python语言编写程序,直接调用spark的接口,并在本地运行。
 
 
一,scala在本地能成功调用并运行spark接口的主要原理:
  1. spark发布版会将spark所有能力,和依赖包一起打包成spark-assembly.jar,并能够在单机模式下运行spark的local模式。
  2. spark发布版提供spark-submit等工具来提交jar和启动local模式
  3. scala程序可以很方便地使用sbt工具编译打包成jar
 
 
二、scala的编译与打包运行
  1. 下载intelij idea , 安装scala, 以及scala语言plugin 和 sbt plugin
  2. 下载spark 发布包,注意要含Hadoop(可选) 、spark-assembly.jar 、py4j(可选) 、 pyspark(可选) 。(spark-1.5.2-bin-hadoop2.3.tgz)
  3. 创建scala项目,F4项目设置dependency: scala和spark-assembly.jar的依赖。如果要支持sql hive 还需提供
    1. datanucleus-api-jdo-3.2.6.jar
    2. datanucleus-core-3.2.10.jar
    3. datanucleus-rdbms-3.2.9.jar
    4. spark-1.5.2-yarn-shuffle.jar
    5. spark-assembly-1.5.2-hadoop2.3.0.jar
    6. spark-examples-1.5.2-hadoop2.3.0.jar
  4. 创建build artificial id, 只需要manifest(main classs) 和 compile output即可。
  5. 编译打包后,生成的jar包,使用以下命令提交:  spark-submit --class weather --conf spark.dynamicAllocation.enabled=true  --conf spark.shuffle.service.enabled=true  /home/mobile/rf_test.jar
  6. 主程序的依赖包 运行法(--driver-library-path 与--jars 指令合用): spark-submit --class EntropyWeights  --jars scopt_2.10-3.5.0.jar --driver-library-path  scopt_2.10-3.5.0.jar  --conf spark.dynamicAllocation.enabled=true  --conf spark.shuffle.service.enabled=true  /home/mart_mobile/fdy/EntropyWeights.jar
    1. 上述案例是冗余的写法: --jars可以指定driver和executor都需要的依赖,--driver-library-path 为driver程序中依赖的命令行参数解析 jar包,但是excutor中并不需要。
    2. executor需要则:  --spark.executor.extraClassPath to augment the executor classpath
    3. 参考: http://stackoverflow.com/questions/37132559/add-jars-to-a-spark-job-spark-submit
    4. spark-submit --class EntropyWeights  --jars scopt_2.10-3.5.0.jar --driver-library-path  scopt_2.10-3.5.0.jar  --conf spark.dynamicAllocation.enabled=true  --conf spark.shuffle.service.enabled=true  /home/mart_mobile/fdy/EntropyWeights.jar -t app.app_celebrity_properties_4rank_da -d author_id1,author_pin --colweights commission=1.0,pv=1.0,uv=1.0,upvote_num=1.0,comment_num=1.0,share_num=1.0,enter_detail_pv=1.0,enter_detail_uv=1.0,ordnum_inby_5thevent=1.0,ordsum_inby_5thevent=1.0,ordnum_in_direct=1.0,ordsum_in_direct=1.0,ordnum_in_indirect=1.0,ordsum_in_indirect=1.0,detail_ratio=1.0,import_ratio=1.0,fans_num=1.0,rank=1.0,open_rate=1.0,  -o app.app_celebrity_rank_da
    5. 新的集群出现 org.apache.commons.math jar 包(多 jar 包依赖的制定方法, 分隔符):   spark-submit --class EntropyWeights  --jars ./scopt_2.10-3.5.0.jar,./commons-math-2.1.jar --driver-library-path  ./scopt_2.10-3.5.0.jar:./commons-math-2.1.jar  --conf spark.dynamicAllocation.enabled=true  --conf spark.shuffle.service.enabled=true  ./EntropyWeights.jar -i app.app_celebrity_properties_4rank_da -d author_id1,author_pin --colweights commission=1.0,pv=1.0,uv=1.0,upvote_num=1.0,comment_num=1.0,share_num=1.0,enter_detail_pv=1.0,enter_detail_uv=1.0,ordnum_inby_5thevent=1.0,ordsum_inby_5thevent=1.0,ordnum_in_direct=1.0,ordsum_in_direct=1.0,ordnum_in_indirect=1.0,ordsum_in_indirect=1.0,detail_ratio=1.0,import_ratio=1.0,fans_num=1.0,rank=1.0,open_rate=1.0,  -o app.app_celebrity_rank_da -s 5.0 -t norm
 
 
三、python在本地能成功调用并运行spark接口的主要原理如下,
首先,依赖以下几个环境:
  1. 编译好的spark发布包,包含Hadoop和spark-assembly.jar
  2. spark项目提供的py4j程序,让python可以访问运行在jvm上的spark。
  3. spark项目提供的pyspark接口,在本地调起spark-assembly.jar,并在py4j的帮助下,方便python语言通过py4j来调用运行在jvm上的spark提供的接口。
 
 
四、本地python调spark的配置和启动方法
  1. 下载spark发布包,注意要含Hadoop、spark-assembly.jar 、py4j 、 pyspark。(spark-1.5.2-bin-hadoop2.3.tgz)
  2. 将该包下python目录下的py4j与pyspark放入到本机python安装第三方库的site-packages目录下
  3. 环境变量的修改:
    1. SPARK_HOME环境变量: os.environ["SPARK_HOME"]='D:\software_bak\spark\spark-1.5.2-bin-hadoop2.3'
    2. Hadoop_home环境变量: os.environ["HADOOP_HOME"]='E:\\hadoop-2.4.1'
  4. 执行。
    1. 可以使用spark的example目录下的wordcount.py与数据people.txt。
    2. 修改该文件的源代码,加入3中所述的两个环境变量。
    3. 运行: python wordcount.py people.txt 即可。
    4. 或者使用 spark-submit 提交 Python 编写的 spark 任务:
      1. 比如 提交的任务中有依赖的 Python 基础库文件:  spark-submit --py-files spark_etl_tools.py  --num-executors 4 --executor-cores 8 --executor-memory 4G --driver-memory 10G --conf spark.driver.maxResultSize=6G   migration_03_welcome_calls.py
 
 
 
 
 
 

如何在本地使用scala或python运行Spark程序的更多相关文章

  1. luigi框架--关于python运行spark程序

    首先,目标是写个python脚本,跑spark程序来统计hdfs中的一些数据.参考了别人的代码,故用了luigi框架. 至于luigi的原理 底层的一些东西Google就好.本文主要就是聚焦快速使用, ...

  2. 使用IDEA运行Spark程序

    使用IDEA运行Spark程序 1.安装IDEA 从IDEA官网下载Community版本,解压到/usr/local/idea目录下. tar –xzf ideaIC-13.1.4b.tar.gz ...

  3. eclipse运行spark程序时日志颜色为黑色的解决办法

    自从开始学习spark计算框架以来,我们老师教的是local模式下用eclipse运行spark程序,然后我在运行spark程序时,发现控制台的日志颜色总是显示为黑色,哇,作为程序猿总有一种强迫症,发 ...

  4. Hadoop:开发机运行spark程序,抛出异常:ERROR Shell: Failed to locate the winutils binary in the hadoop binary path

    问题: windows开发机运行spark程序,抛出异常:ERROR Shell: Failed to locate the winutils binary in the hadoop binary ...

  5. Python 运行其他程序

    10.4 运行其他程序 在Python中可以方便地使用os模块运行其他的脚本或者程序,这样就可以在脚本中直接使用其他脚本,或者程序提供的功能,而不必再次编写实现该功能的代码.为了更好地控制运行的进程, ...

  6. 如何运行Spark程序

    [hxsyl@CentOSMaster spark-2.0.2-bin-hadoop2.6]# ./bin/spark-submit --class org.apache.spark.examples ...

  7. 运行Spark程序的几种模式

    一. local 模式 -- 所有程序都运行在一个JVM中,主要用于开发时测试    无需开启任何服务,可直接运行 ./bin/run-example 或 ./bin/spark-submit 如:  ...

  8. Python运行MapReducer程序时所遇异常

    landen@Master:~/UntarFile/hadoop-1.0.4$ bin/hadoop jar contrib/streaming/hadoop-streaming-1.0.4.jar ...

  9. spark学习14(spark local模式运行spark程序的报错)

    报错1 java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries. 解 ...

随机推荐

  1. box-cox解读

    可以额外参考资料:https://blog.csdn.net/sinat_26917383/article/details/77864582,http://www.dataguru.cn/articl ...

  2. Linux操作系统之用户权限,重定向,文件管理

    文件的权限 ls -al  ----->隐藏文件会以 .号开头 ls -ld :显示目录自身属性 ls -i 显示文件的索引号----每个文件都有一个对应的号码 ls -r 逆序显示 dr-xr ...

  3. Python使用Thrift

    2019年07月30日 14:59:29 Shower稻草人 阅读数 25更多 分类专栏: Python   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接 ...

  4. Hive修改表语句

    0x01:重命名表 1 ALTER TABLE table_name RENAME TO new_table_name; 上面这个命令可以重命名表,数据所在的位置和分区都没有改变. 0x02:改变列名 ...

  5. css实现input文本框的双边框美化

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  6. UI系统的表示与维护

    UI系统的表示与维护: 渲染单元的组织.维护.交互.解释.渲染. UI系统在应用层连接着视图的表示,在系统层连接着视图的绘制. 一.UI的结构 树形结构 二.UI的描述: 1.UI系统或UIkit或U ...

  7. Easy-Mock模拟get接口和post接口实例

    1.先创建项目,再新建接口 创建项目入口:首页右下角 + 按钮 创建接口入口如下图: 关于mock的语法这里不做说明,可查看mock.js官方查看更详情的资料. 小tip:在Easy-Mock里面支持 ...

  8. 苹果MAC OS查看MAC地址及修改ip

    一,查看mac地址 第一步: 第二步: 第三步: 二,更改IP 第一步: 第二步: 第三步: 最后点击“好”就完成了 我要这天再遮不住我眼,要这地再埋不了我心.要这天下众生都明白我意,要那诸佛都烟消云 ...

  9. Python-内存泄漏 持续增长 检查点

    仅个人目前遇见的内存问题, 可能不适用所有问题 一下只是简单的实例代码, 可能跑不起来, 只是看看 可变变量参数 小例子: def foo(a, b=[]): b.append(a) print b ...

  10. [RN] React Native 使用精美图标库react-native-vector-icons

    React Native 使用精美图标库react-native-vector-icons 一.安装依赖 npm install --save react-native-vector-icons // ...