我在java中有spark spark应用程序,它从kinesis流(1 shard)读取记录并在此之后进行一些处理。
当我在spark本地模式下运行我的应用程序时,它能够接收记录,但是当我在独立群集中运行相同的应用程序时,它不会从kinesis流中读取记录。
我使用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
使用的Spark版本:2.4.0
任何人都可以建议我在这里缺少什么?
为了从kinesis读取数据,我们需要将accessKey和secretKey设置为env变量或IAM角色(如果它是aws ec2机器)。
如果以群集/客户端模式提交spark应用程序,请确保设置这些属性,否则它将不会从kinesis流中读取任何数据,因为缺少必需的凭据。
我尝试将这些env变量放在conf / spark-env.sh文件中,它可以在集群的每个节点上运行