如何使用 EMR 中的引导操作在 spark-conf 中添加 spark.executor.extraClassPath
Posted
技术标签:
【中文标题】如何使用 EMR 中的引导操作在 spark-conf 中添加 spark.executor.extraClassPath【英文标题】:How to add spark.executor.extraClassPath in spark-conf using bootsrap action in EMR 【发布时间】:2017-07-04 11:50:00 【问题描述】:我正在尝试将数据从 Netezza 加载到 AWS。我想在引导操作中的 spark-defaults.conf 中添加 spark.executor.extraClassPath 和 spark.driver.extraClassPath 。请在下面找到 updconf.sh(引导操作)
#!/bin/bash
sudo aws s3 cp s3://my-bucket/nzjdbc.jar /usr/lib/sqoop/lib/ --sse aws:kms --sse-kms-key-id 'xxxxxxxxxxxxxxxxxxxxxx'
echo "updating spark-defaults.conf"
sudo chmod 777 /home/hadoop/spark/conf/spark-defaults.conf
sudo echo >> /home/hadoop/spark/conf/spark-defaults.conf
driverstr='/usr/lib/sqoop/lib/nzjdbc.jar'
sudo echo "export spark.executor.extraClassPath=`echo $driverstr`">>/home/hadoop/spark/conf/spark-defaults.conf
sudo echo "export spark.driver.extraClassPath=`echo $driverstr`">>/home/hadoop/spark/conf/spark-defaults.conf
但我收到“/etc/spark/conf/spark-defaults.conf:没有这样的文件或目录”错误。 我怎样才能做到这一点?
【问题讨论】:
引导操作在安装 EMR 软件之前运行。这就是 spark-defaults.conf 不存在的原因。 【参考方案1】:有几种方法可以实现这一点。最简单的一个如下:
创建一个名为 myConfig.json 的文件
'Configurations': [
'Classification': 'spark-defaults',
"Properties":
"spark.executor.extraClassPath": "value for executorsclasspath",
"spark.driver.extraClassPath": "value for driver classpath",
"spark.yarn.maxAppAttempts": "...",
....
....//other properties as you need.
,
]
将文件上传到 S3 存储桶。
从控制台创建集群时,只需在“编辑软件设置”中提供文件在 S3 中的位置即可。
-
根据需要提供其他参数并创建集群。
此外,您还可以使用任何 AWS 开发工具包(如 CLI 或 Python)并提供这些配置参数。
参考:http://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-configure.html
【讨论】:
以上是关于如何使用 EMR 中的引导操作在 spark-conf 中添加 spark.executor.extraClassPath的主要内容,如果未能解决你的问题,请参考以下文章
Amazon EMR - 从设备上的 Yum 更新引导操作失败
如何在 EMR 集群引导上设置 livy.server.session.timeout?