EMR 步骤将文件从 s3 复制到 spark lib

EMR step copy file from s3 to spark lib

我有我的依赖 jdbc s3 中的 spark 驱动程序,我试图在集群准备好后立即将其加载到 spark lib 文件夹中,因此在我的 shell 中创建了以下步骤spark-submit 作业之前的脚本,

--steps "[{\"Args\":[\"/usr/bin/hdfs\",\"dfs\",\"-get\",
                 \"s3://xxxx/jarfiles/sqljdbc4.jar\",
                 \"/usr/lib/spark/jars/\"],
         \"Type\":\"CUSTOM_JAR\",
         \"ActionOnFailure\":\"$STEP_FAILURE_ACTION\",
         \"Jar\":\"s3://elasticmapreduce/libs/script-runner/script-runner.jar\",
         \"Properties\":\"\",
         \"Name\":\"Custom JAR\"},
         {\"Args\":[\"spark-submit\",
                 \"--deploy-mode\", \"cluster\",
                 \"--class\", \"dataload.data_download\",
                 \"/home/hadoop/data_to_s3-assembly-0.1.jar\"],
         \"Type\":\"CUSTOM_JAR\",
         \"ActionOnFailure\":\"$STEP_FAILURE_ACTION\",
         \"Jar\":\"s3://xxxx.elasticmapreduce/libs/script-runner/script-runner.jar\",
         \"Properties\":\"\",
         \"Name\":\"Data_Download_App\"}]"

但是在 dfs -get 步骤中不断出现权限被拒绝的错误,我尝试提供 "sudo /usr/bin/hdfs\" ,但后来没有得到像 "sudo /usr/bin/hdfs\" 这样的文件。我如何在这里使用 sudo?或者是作为步骤的一部分,还有任何其他方法可以将文件从 s3 复制到 spark lib 文件夹。我尝试在 bootstrap 中执行此操作,但是,在 bootstrap 操作期间,没有创建 spark 文件夹,因此失败了好的。谢谢。

在此处为正在寻找相同答案的任何人更新答案。我最终在 shell 脚本中完成了它,我将 jars 复制到 spark/jars 文件夹。

Steps = [{
            'Name': 'copy spark jars to the spark folder',
            'ActionOnFailure': 'CANCEL_AND_WAIT',
            'HadoopJarStep': {
                'Jar': 'command-runner.jar',
                'Args': ['sudo', 'bash', '/home/hadoop/reqd_files_setup.sh', self.script_bucket_name]
            }
        }]

shell脚本中的脚本,

sudo aws s3 cp s3://bucketname/ /usr/lib/spark/jars/ --recursive --exclude "*" --include "*.jar"