java - Kinesis Spark 流确实读取记录:在独立集群中运行
问题描述
我在 java 中有 spark 流应用程序,它从 kineses 流(1 个分片)读取记录并在此之后进行一些处理。
当我在 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 流中读取任何数据,因为缺少所需的凭据。
我尝试将这些环境变量放在 conf/spark-env.sh 文件中,它适用于集群的每个节点
推荐阅读
- javascript - 验证javascript中的输入值
- git - 不能先推送到基于 docker 的 gitlab 服务器
- html - 填充 Font-awesome 图标的透明度
- javascript - 如何在 Nest.js 中查询多个 @ManyToMany 中的数据
- javascript - 将数据转换为具有多级标题的 HTML 数据透视表
- java - Eclipse 的代码搜索功能如何工作?
- git - Git - 如何“软”合并?
- mysql - 尝试创建表时出现错误,我不知道为什么
- c - 添加两个 char 数组的值
- windows-subsystem-for-linux - 在 Windows 上使用多个 linux 子系统更改 bash.exe