【发布时间】:2018-01-09 19:55:26
【问题描述】:
我创建了两个数据框,它们来自 Hive 表(PC_ITM 和 ITEM_SELL)并且大小很大,我正在使用这些数据框 通过注册为表经常在SQL查询中。但是因为这些很大,所以需要很多时间 得到查询结果。所以我将它们保存为镶木地板文件,然后读取它们并注册为临时表。但我仍然没有获得良好的性能,所以我已经广播了这些数据帧,然后注册为如下表。
PC_ITM_DF=sqlContext.parquetFile("path")
val PC_ITM_BC=sc.broadcast(PC_ITM_DF)
val PC_ITM_DF1=PC_ITM_BC
PC_ITM_DF1.registerAsTempTable("PC_ITM")
ITM_SELL_DF=sqlContext.parquetFile("path")
val ITM_SELL_BC=sc.broadcast(ITM_SELL_DF)
val ITM_SELL_DF1=ITM_SELL_BC.value
ITM_SELL_DF1.registerAsTempTable(ITM_SELL)
sqlContext.sql("JOIN Query").show
但我仍然无法实现性能,因为它所花费的时间与未广播这些数据帧时的时间相同。
谁能判断这是否是广播和使用它的正确方法?`
【问题讨论】:
标签: scala apache-spark