我在Java中有一个Spark Streaming应用程序,该应用程序从kineses流(1个分片)中读取记录,然后进行一些处理。
当我在spark本地模式下运行应用程序时,它能够接收记录,但是当我在独立集群中运行同一应用程序时,它不会从运动学流中读取记录。
我已经使用spark-submit命令运行该应用程序:
本地模式:
spark-submit --class com.test.Main --master local[3] --jars /test/test-saprk-app.jar
独立集群模式:
spark-submit --class com.test.Main --master spark://<machine-ip>:7077 --deploy-mode cluster --executor-cores 3 --executor-memory 10GB --jars /test/test-saprk-app.jar
使用的火花版本:2.4.0
任何人都可以建议我在这里缺少什么吗?
答案 0 :(得分:1)
要从kinesis读取数据,我们需要将accessKey和secretKey设置为env变量,或者将其设置为aws ec2机器的IAM角色。
如果spark应用程序以集群/客户端模式提交,请确保设置了这些属性,否则由于缺少所需的凭证,因此它不会从kinesis流中读取任何数据。
我尝试将这些env变量放入conf / spark-env.sh文件中,并且可以在群集的每个节点上使用