У меня есть драйвер jdbc зависимости для spark в s3, я пытаюсь загрузить его, чтобы сразу же запустить папку lib, когда кластер будет готов, поэтому создал следующий шаг в моем сценарии оболочки перед заданием 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 как часть шага. Я попытался сделать это в начальной загрузке, однако во время действия начальной загрузки не создается папка Spark, так что это тоже не удается. Спасибо.





Обновление ответа здесь для всех, кто ищет то же самое. Я закончил тем, что сделал это в сценарии оболочки, где я копирую банки в папку 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]
}
}]
Скрипт в скрипте оболочки,
sudo aws s3 cp s3://bucketname/ /usr/lib/spark/jars/ --recursive --exclude "*" --include "*.jar"