A transmissão não ocorre ao ingressar nos quadros de dados no Spark 1.6
Abaixo está o código de exemplo que estou executando. Quando esse trabalho de faísca é executado, as associações ao Dataframe acontecem usando sortmergejoin em vez de 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")
O broadcastjoin não está acontecendo, mesmo quando eu especifico uma dica broadcast () na instrução de junção.
O otimizador está dividindo o quadro de dados com hash e causando distorção de dados.
Alguém viu esse comportamento?
Estou executando isso no fio usando Spark 1.6 e HiveContext como SQLContext. O trabalho de faísca é executado em 200 executores. e o tamanho dos dados da txnTable é de 240 GB e o tamanho dos dados de countriesDf é de 5mb.