我试图在EMR中运行2个pyspark步骤,都使用KinesisUtils从Kinesis中读取。这需要依赖库spark-streaming-kinesis-asl_2.11。
我正在使用Terraform来建立EMR集群并使用args调用这两个步骤:
-打包org.apache.spark:spark-streaming-kinesis-asl_2.11:2.4.5
启动与从maven下载jar并导致校验和失败的两个步骤似乎都存在争议。
sudo spark-shell-打包org.apache.spark:spark-streaming-kinesis-asl_2.11:2.4.5
这会导致问题,因为spark-shell仅在主节点上可用,并且引导程序尝试在所有节点上运行。
grep-q'“ isMaster”:true'/ mnt / var / lib / info / instance.json || {回显“不在主节点上运行,无所事事” &&退出0;}
那似乎不起作用。
我试图在EMR configuration.json中添加spark配置以实现此目的
{
“分类”:“ spark-defaults”,
“属性”:{
"spark.jars.packages": "org.apache.spark:spark-streaming-kinesis-asl_2.11:2.4.5"
}
}
这也不起作用,似乎停止了将所有jar复制到主节点目录
/home/hadoop/.ivy2/cache
手动操作是登录到主节点并运行
sudo spark-shell-打包org.apache.spark:spark-streaming-kinesis-asl_2.11:2.4.5
然后不使用--packages选项手动提交作业。
当前,我要做的就是分别手动启动失败的作业(AWS控制台中的克隆步骤),一切运行正常。
我只希望能够成功启动所有步骤来启动集群,我们将不胜感激。
答案 0 :(得分:0)
--jars <s3 location of jar>