我在蜂巢里有6张桌子。我正在使用spark streaming将这些表与即将到来的Kafka流数据连接起来。我使用了registerTempTable函数,注册了所有的6个表,甚至还注册了卡夫卡的数据。然后,我在所有的表之间应用了inner。
示例:
select * from tableA a 
join tableB b on a.id = b.id     
join tableC c on b.id = c.id
......
......大约花了3分钟来完成连接。我可以看到大量的数据混洗。

我使用了以下属性-
  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")有没有什么方法可以减少随机读写。
发布于 2018-05-29 21:19:29
您需要:
将kafka数据转换为键/值PairRDD
cache()中间结果的PairRDDs 
这样一来,first join会很慢,而next会更快,因为数据的重新分区只会发生一次。
关于spark here中的连接,有一些很好的提示
https://stackoverflow.com/questions/50582190
复制相似问题