两种方法:java
使用 spark-submit 解释执行python脚本
使用 python 解释执行python脚本
1. 使用Spark-submit解释执行python脚本python
python脚本中须要在开头导入spark相关模块,调用时使用spark-submit提交,示例代码以下:bash
"""odflow.py""" from pyspark import SparkContext fileDir = "/TripChain3_Demo.txt" # sc = SparkContext("local", "ODFlow") sc = SparkContext("spark://ITS-Hadoop10:7077", "ODFlow") lines = sc.textFile(fileDir) # python不能直接写多行的lambda表达式,因此要封装在函数中 def toKV(line): arr = line.split(",") t = arr[5].split(" ")[1].split(":") return (t[0]+t[1]+","+arr[11]+","+arr[18],1) r1 = lines.map( lambda line : toKV(line) ).reduceByKey(lambda a,b: a+b) # 排序而且存入一个(repartition)文件中 r1.sortByKey(False).saveAsTextFile("/pythontest/output")
发布命令为:函数
spark-submit \ --master spark://ITS-Hadoop10:7077 \ odflow.py
2. 使用 python 解释执行python脚本oop
直接用python执行会出现错误:spa
ImportError: No module named pyspark ImportError: No module named py4j.java_gateway
缺乏pyspark和py4j这两个模块,这两个包在Spark的安装目录里,须要在环境变量里定义PYTHONPATH,编辑~/.bashrc或者/etc/profile文件都可code
vi ~/.bashrc # 或者 sudo vi /etc/profile # 添加下面这一行 export PYTHONPATH=$SPARK_HOME/python/:$SPARK_HOME/python/lib/py4j-0.8.2.1-src.zip:$PYTHONPATH # 使其生效 source ~/.bashrc # 或者 sudo source /etc/profile
而后关闭终端,从新打开,用python执行便可排序
python odflow.py