Трансляция не происходит при присоединении к фреймам данных в Spark 1.6
Ниже приведен пример кода, который я запускаю. при запуске этой искровой работы соединения Dataframe происходят с использованием sortmergejoin вместо broadcastjoin.
def joinedDf (sqlContext: SQLContext,
txnTable: DataFrame,
countriesDfBroadcast: Broadcast[DataFrame]):
DataFrame = {
txnTable.as("df1").join((countriesDfBroadcast.value).withColumnRenamed("CNTRY_ID", "DW_CNTRY_ID").as("countries"),
$"df1.USER_CNTRY_ID" === $"countries.DW_CNTRY_ID", "inner")
}
joinedDf(sqlContext, txnTable, countriesDfBroadcast).write.parquet("temp")
Вещание не происходит, даже если я указал подсказку broadcast () в операторе соединения.
Оптимизатор разбивает на разделы фрейм данных и вызывает перекос данных.
Кто-нибудь видел такое поведение?
Я запускаю это на пряжу, используя Spark 1.6 и HiveContext в качестве SQLContext. Искровая работа работает на 200 исполнителей. и размер данных txnTable составляет 240 ГБ, а размер данных странDf составляет 5 МБ.