【问题标题】:Kinesis Spark streaming does read records: running in standalone clusterKinesis Spark 流确实读取记录:在独立集群中运行
【发布时间】:2019-03-18 07:28:41
【问题描述】:

我在 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

谁能建议我在这里缺少什么?

【问题讨论】:

  • 嗨@Anshu,到目前为止你检查过日志吗?你有什么错误吗?
  • 它没有抛出任何错误,所以我无法弄清楚缺少什么。早些时候,我使用用于设置 accessKey 和 secretKey 值的脚本在本地模式下运行。对于独立模式,我也使用了类似的脚本,但这些设置对我不起作用。将该设置移动到 spark-env.sh 文件后,它起作用了。
  • 完美@AnshuGoel

标签: java apache-spark spark-streaming amazon-kinesis


【解决方案1】:

为了从 kinesis 读取数据,我们需要将 accessKey 和 secretKey 设置为环境变量或 IAM 角色(如果它是 aws ec2 机器)。

如果 spark 应用程序以集群/客户端模式提交,请确保设置这些属性,否则它不会从 kinesis 流中读取任何数据,因为缺少所需的凭据。

我尝试将这些环境变量放在 conf/spark-env.sh 文件中,它在集群的每个节点上都有效

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多