Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 如何执行从s3加载更多脚本的EMR步骤?_Shell_Amazon Web Services_Amazon S3_Amazon Emr - Fatal编程技术网

Shell 如何执行从s3加载更多脚本的EMR步骤?

Shell 如何执行从s3加载更多脚本的EMR步骤?,shell,amazon-web-services,amazon-s3,amazon-emr,Shell,Amazon Web Services,Amazon S3,Amazon Emr,我想在EMR上执行一个shell脚本,加载一个tarball,解压它并在里面运行脚本。我选择此设置是为了尽可能不依赖供应商。 我的剧本是 #!/bin/sh aws s3 cp s3://path_to_my_bucket/name_of.tar.gz . tar -xzf name_of.tar.gz . main_script.sh 其中,main_script.sh是tarball的一部分,还有许多其他包、脚本和配置文件 如果我在主节点上以Hadoop用户的身份运行此脚本,那么一切都会正

我想在EMR上执行一个shell脚本,加载一个tarball,解压它并在里面运行脚本。我选择此设置是为了尽可能不依赖供应商。 我的剧本是

#!/bin/sh
aws s3 cp s3://path_to_my_bucket/name_of.tar.gz .
tar -xzf name_of.tar.gz
. main_script.sh
其中,
main_script.sh
是tarball的一部分,还有许多其他包、脚本和配置文件

如果我在主节点上以Hadoop用户的身份运行此脚本,那么一切都会正常工作。作为通过添加的步骤,无论我尝试什么,都会出现错误

到目前为止我尝试的内容(以及错误):

  • 按上述方式运行脚本(未找到文件“main_script.sh”)
  • 将路径硬编码为Hadoop用户主目录(对
    main\u script.sh
    的权限被拒绝)
  • 动态获取脚本所在的路径(使用),并将此路径作为
    tar-C
    选项的参数,并从此路径显式调用
    main_script.sh
    (另一个对
    main_script.sh
    的权限被拒绝)
将bash脚本加载到主节点并执行它的正确方法是什么?


作为奖励,我想知道为什么
命令runner.jar
的设置与spark步骤的设置如此不同,spark步骤作为Hadoop用户在Hadoop用户目录中运行。

您可以将script-runner.jar与region一起使用

JAR位置:s3://us-east-1.elasticmapreduce/libs/script-runner/script-runner.JAR

参数:s3://your_bucket/your_shell\u script.sh

有关更多信息,请参阅下面的链接