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.