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"
我有我的依赖 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"