标签:scala apache-spark amazon-web-services amazon-s3 java
当我在unix shell / terminal中运行所有这3个命令时,它们都工作正常,返回退出状态为0
unix_shell> ls -la
unix_shell> hadoop fs -ls /user/hadoop/temp
unix_shell> s3-dist-cp --src ./abc.txt --dest s3://bucket/folder/
现在我试图通过scala process api作为外部进程运行这些相同的命令,示例代码如下:
import scala.sys.process._
val cmd_1 = "ls -la"
val cmd_2 = "hadoop fs -ls /user/hadoop/temp/"
val cmd_3 = "/usr/bin/s3-dist-cp --src /tmp/sample.txt --dest s3://bucket/folder/"
val cmd_4 = "s3-dist-cp --src /tmp/sample.txt --dest s3://bucket/folder/"
val exitCode_1 = (stringToProcess(cmd_1)).! // works fine and produces result
val exitCode_2 = (stringToProcess(cmd_2)).! // works fine and produces result
val exitCode_3 = (stringToProcess(cmd_3)).! // **it just hangs, yielding nothing**
val exitCode_4 = (stringToProcess(cmd_4)).! // **it just hangs, yielding nothing**
以上cmd_3和cmd_4之间的区别只是绝对路径.
我正在如下所示的spark-submit脚本中显式传递相关的依赖项
--jars hdfs:///user/hadoop/s3-dist-cp.jar
您的意见/建议将有所帮助.谢谢 !
解决方法:
好像您所做的事情是对的.请参阅此处
https://github.com/gorros/spark-scala-tips/blob/master/README.md
import scala.sys.process._
def s3distCp(src: String, dest: String): Unit = {
s"s3-dist-cp --src $src --dest $dest".!
}
请检查此注释…我不知道您是否遇到这种情况.
关于您的–jars /usr/lib/hadoop/client/*.jar
您可以使用tr命令(如this. see my answer)附加与s3-dist-cp相关的jars
--jars $(echo /dir_of_jars/*.jar | tr ' ' ',')
注意:要使用此方法,您需要添加Hadoop应用程序,并且需要在客户端或本地模式下运行Spark,因为s3-dist-cp在从属节点上不可用.如果要在群集模式下运行,请在引导过程中将s3-dist-cp命令复制到从属服务器.
标签:scala,apache-spark,amazon-web-services,amazon-s3,java 来源: https://codeday.me/bug/20191210/2104460.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。