当前位置: 首页 > 知识库问答 >
问题:

如何修复Spark Streaming中的数据位置?

朱阳晖
2023-03-14

Spark版本:1.6.2

火花配置:

>

  • 执行人:18

    每个执行者的内存:30g

    核心x执行者:2

    Kafka配置:

    • 分区: 18

    背景:

    我有一个Spark流式传输管道,它使用来自Kafka的新Direct方法而不是接收器。这个管道从kafka接收数据,转换数据,并插入到Hive。我们发布了用于插入数据的触发器的局部性级别等于RACK_LOCAL,而不是PROCESS_LOCALNODE_LOCAL。此外,输入大小列显示网络信息而不是内存。我设置了配置变量spark.locality.wait=30来测试Spark是否等待足够的时间来选择最佳局部性模式,但没有显示任何改进。

    考虑到spark中的kafkapartitions=num分区是相等的,我认为数据是在同一个执行器中处理的,该执行器在最后执行操作,但我不确定是否会看到结果。

    有人知道如何强制任务NODE_LOCAL或PROCESS_LOCAL吗??

  • 共有1个答案

    寇升
    2023-03-14

    正如评论中所说,Locality是指正在使用的信息源。KafkaDirect方法最终使用KafkaRDD,它根据原始Kafka队列节点定义本地性。这意味着除非您的Kafka机器与Spark执行器托管,否则您将无法获得更好的本地性。

    用接收器的方法,它会报告更好的位置,但只是因为它基本上忽略了Kafka-

     类似资料:
    • 我正在为一个学校项目构建一个数据库,我做了所有的列,但是我得到了一个错误。 “错误1406(22001):第1行的‘stu first\u name’列的数据太长” 我做了一些搜索,发现varchar的错误很常见,人们说要切换到longtext,但项目说必须是char。 是我写专栏时的代码。

    • :) 我已经在一个(奇怪的)情况中结束了自己,简单地说,我不想使用来自Kafka的任何新记录,因此暂停主题中所有分区的sparkStreaming消费(InputStream[ConsumerRecord]),执行一些操作,最后,恢复消费记录。 首先这可能吗? 我一直在尝试这样的事情: 但是我得到了这个: 任何帮助我理解我遗漏了什么,以及为什么当消费者明确分配了分区时我会得到空结果的帮助都将受到欢

    • 想要显示图像,在ionic页面的视图中用Laravel从rest API响应。 代码在使用postman测试时有效,但在ionic中出错: 服务或提供商中的Frent-end(离子) 组件:

    • 我有一个集合,每个用户都有自己的文档。现在,我想创建一个子集合来存储与特定用户相关的更多数据。 到目前为止,我的代码如下所示: 如何将数据存储在子集合中? 编辑我创建了一个新的保存函数,但firestore创建了一个名为“uid”的新文档,而不是使用当前uid将数据存储在文档的子集合中。如何解决这个问题?

    • 我刚开始使用Spark streaming并尝试运行本教程中的一个示例,我正在跟踪制作并运行我们自己的NetworkWordCount。我已经完成了第8步,并从SBT制作了一个罐子。 现在我正在尝试使用第9步中的命令运行deploy my jar,如下所示: 我创建的jar包含“NetworkWordCount”类,该类具有来自spark示例的以下代码 我无法确定我做错了什么。

    • 我有这样的数据。 从上述数据中细化“中位数”的最短方法是什么。我的结果应该是这样的... 中位数 = 1/2(n 1),其中 n 是样本中数据值的数量。