Spark运行Python代码



两种方法:

  1. 使用 spark-submit 解释执行python脚本
  2. 使用 python 解释执行python脚本

1. 使用Spark-submit解释执行python脚本

Python脚本中需要在开头导入spark相关模块,调用时使用spark-submit提交,示例代码如下:

===========================================================

"""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脚本

直接用python执行会出现错误:

ImportError: No module named pyspark
ImportError: No module named py4j.java_gateway

缺少pyspark和py4j这两个模块,这两个包在Spark的安装目录里,需要在环境变量里定义PYTHONPATH,编辑~/.bashrc或者/etc/profile文件均可

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
原文链接:http://blog.csdn.net/houmou/article/details/50925573



python odflow.py



### Ubuntu 上安装 Spark 并通过 Jupyter Notebook 运行 Spark 代码 要在 Ubuntu 系统上成功运行 Spark 的 Jupyter Notebook 示例,需完成以下几个方面的设置: #### 安装 Apache Spark 和 PySpark Apache Spark 是一种分布式计算框架,PySpark 则是其 Python API。为了使 Jupyter 能够调用 Spark 功能,需要先安装 Spark。 可以通过以下命令下载并解压 Spark: ```bash wget https://downloads.apache.org/spark/spark-3.3.0/spark-3.3.0-bin-hadoop3.tgz tar -xvzf spark-3.3.0-bin-hadoop3.tgz sudo mv spark-3.3.0-bin-hadoop3 /usr/local/spark ``` 接着配置环境变量以便于全局访问 Spark 命令,在 `~/.bashrc` 文件中添加如下内容: ```bash export SPARK_HOME=/usr/local/spark export PATH=$PATH:$SPARK_HOME/bin ``` 重新加载 `.bashrc` 配置文件以应用更改: ```bash source ~/.bashrc ``` #### 设置 PySpark Kernel 为了让 Jupyter 支持 PySpark 编程环境,需要创建一个新的 kernel 或者修改现有 kernel 来集成 PySpark。 首先确认已安装 Jupyter Notebook[^2]: ```bash pip install jupyter ``` 然后编辑或生成新的 Jupyter configuration file[^3]: ```bash jupyter notebook --generate-config vim ~/.jupyter/jupyter_notebook_config.py ``` 在该配置文件中加入以下内容以启用 SSL 加密连接(可选)或者自定义路径设置: ```python c.NotebookApp.certfile = '/path/to/your/certificate.crt' c.NotebookApp.keyfile = '/path/to/your/private/key.key' ``` 接下来创建一个专门用于 PySpark 的 iPython kernel 启动脚本 `/usr/local/bin/pyspark-kernel.sh`,赋予执行权限,并将其作为默认启动器关联到 Jupyter 中。 ```bash #!/bin/bash PYSPARK_DRIVER_PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS="notebook" pyspark chmod +x /usr/local/bin/pyspark-kernel.sh ``` 最后验证新 kernel 是否可用: ```bash pyspark-kernel.sh ``` #### 使用 Jupyter Notebook 执行 Spark 实例 打开浏览器输入地址 http://localhost:8888 即可看到已经预设好的 PySpark 开发界面。尝试编写简单的 RDD 操作测试集群功能是否正常工作: ```python from pyspark import SparkContext, SparkConf conf = SparkConf().setAppName('Test').setMaster('local[*]') sc = SparkContext.getOrCreate(conf) data = sc.parallelize([1, 2, 3, 4]) result = data.map(lambda x: x * 2).collect() print(result) ``` 上述代码片段展示了如何初始化 Spark Context 对象以及利用 map 函数处理数据集[^1]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值