如何在EMR中使用bootsrap操作在spark-conf中添加spark.executor.extraClassPath

时间:2017-07-04 11:50:01

标签: amazon-web-services apache-spark pyspark emr

我正在尝试将数据从Netezza加载到AWS。我想在bootstrap操作中的spark-defaults.conf中添加spark.executor.extraClassPath和spark.driver.extraClassPath。请在下面找到updconf.sh(Bootstrap action)

#!/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:没有这样的文件或目录'错误。 我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

有几种方法可以实现这一目标。最简单的一个如下:

  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.
                    }
                },
            ]
    
  2. 将文件上传到S3存储桶。

  3. 从控制台创建群集时,只需在S3中提供S3中文件的位置"编辑软件设置"。

  4. step 1 in cluster creation.

    1. 根据需要提供其他参数并创建群集。
    2. 此外,您还可以使用任何AWS SDK,如CLI或Python,并提供这些配置参数。

      参考:http://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-configure.html