首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >性能优化

性能优化
EN

Stack Overflow用户
提问于 2018-05-29 18:34:03
回答 1查看 161关注 0票数 1

我在蜂巢里有6张桌子。我正在使用spark streaming将这些表与即将到来的Kafka流数据连接起来。我使用了registerTempTable函数,注册了所有的6个表,甚至还注册了卡夫卡的数据。然后,我在所有的表之间应用了inner。

示例:

代码语言:javascript
运行
复制
select * from tableA a 
join tableB b on a.id = b.id     
join tableC c on b.id = c.id
......
......

大约花了3分钟来完成连接。我可以看到大量的数据混洗。

我使用了以下属性-

代码语言:javascript
运行
复制
  conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
  conf.set("spark.kryoserializer.buffer.max", "512")
  conf.set("spark.sql.broadcastTimeout", "36000")
  conf.set("spark.sql.autoBroadcastJoinThreshold", "94371840")

有没有什么方法可以减少随机读写。

EN

回答 1

Stack Overflow用户

发布于 2018-05-29 21:19:29

您需要:

将kafka数据转换为键/值PairRDD

  • Partition所有具有相同partitioner

  • cache()中间结果的PairRDDs

  • ,然后您可以在join操作中使用RDDs (但您还需要将kafka数据转换为PairRDD。

这样一来,first join会很慢,而next会更快,因为数据的重新分区只会发生一次。

关于spark here中的连接,有一些很好的提示

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50582190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档