Pyspark 遇到的一些坑点

1. AWS EMR jupyternote book 和 EMR 提交steps 内存优化管理机制可能不同

spark 相同会话配置,jupyter notebook 中能够运行完代码,但通过提交steps起py文件没法运行,只能自行调试。 

2. 引用jar包时,jupyer notebook 可以配置引入,但是EMR 提交steps 找不到对应jar包

aws 建议的方法:

spark-submit --packages 提交方式失败 (不能使用)

将jar包下载在s3, spark-submit --jars 引用s3 文件的父目录 (不能使用)

在spark的cluster 节点上下载jar包,到路径:/usr/lib/spark/jars (可行)

最终可行方案: 进入spark cluster 节点,wget 下载jar包到/usr/lib/spark/jars 

(一些linux 操作:

        sudo -i 

        su Hadoop 

3. pyspark kernel 有些包引用 成功,但是使用报错

注意包的版本。 在maven中找到与pyspark对应的版本

4. py配置环境, jupyter 配置环境

py:

os.environ["SPARK_CONF_DIR"] = "/usr/lib/spark/conf"

os.environ["HADOOP_CONF_DIR"] = "/etc/hadoop/conf"

os.environ["PYSPARK_PYTHON"] = "/usr/bin/python3"

os.environ["SPARK_HOME"] = "/usr/lib/spark"

spark = SparkSession.builder.master("yarn").appName("test")\

.config("spark.executor.instances", "2")\

.config("spark.executor.cores", "2")\

.config("spark.executor.memory", "10g")\

.config("spark.driver.memory", "8g")\

.config("spark.jars.packages", "org.apache.spark:spark-avro_2.12:3.3.0,io.github.spark-redshift-community:spark-redshift_2.12:6.2.0-spark_3.3,com.amazon.redshift:redshift-jdbc42:2.1.0.29,com.microsoft.azure:synapseml_2.12:0.11.4")\

.enableHiveSupport().getOrCreate()

jupyter:

先发起一个会话

from pyspark import SparkContext
from pyspark.sql.window import Window
 

然后 使用magic cell 进行配置

%%configure -f
{
    "conf": {
        
        "spark.jars.packages": "org.apache.spark:spark-avro_2.12:3.3.0,io.github.spark-redshift-community:spark-redshift_2.12:6.2.0-spark_3.3,com.amazon.redshift:redshift-jdbc42:2.1.0.29,com.microsoft.azure:synapseml_2.12:0.11.4",
        "spark.pyspark.virtualenv.enabled":"true",
        "livy.repl.enableHiveContext":"true",
        "spark.pyspark.python": "python3",
        "spark.pyspark.virtualenv.enabled": "true",
        "spark.sql.execution.arrow.enabled": "true",
        "spark.driver.maxResultSize": "12g",
        "spark.driver.memory": "12g",    
        "spark.executor.memory": "24g",    
        "spark.pyspark.virtualenv.type":"native",
        "spark.pyspark.virtualenv.bin.path":"/usr/bin/virtualenv"
    }
}

因为是虚拟环境,需要安装包

sc.install_pypi_package("pyparsing", "https://pypi.tuna.tsinghua.edu.cn/simple")
sc.install_pypi_package("boto3", "https://pypi.tuna.tsinghua.edu.cn/simple")
sc.install_pypi_package("pandas", "https://pypi.tuna.tsinghua.edu.cn/simple")

部分包可能需要指定版本,才能正常使用。

sc.install_pypi_package("lightgbm==3.3.5", "https://pypi.tuna.tsinghua.edu.cn/simple")

准备好环境之后,可以继续引入需要的包

import logging

5. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值