Почему мой BroadcastHashJoin медленнее, чем ShuffledHashJoin в Spark
Я выполняю соединение, используяjavaHiveContext
в искре.
Большая таблица составляет 1,76 Гб и имеет 100 миллионов записей.
Вторая таблица имеет размер 273 МБ и имеет 10 миллионов записей.
Я получаюJavaSchemaRDD
и я звонюcount()
в теме:
String query="select attribute7,count(*) from ft,dt where ft.chiavedt=dt.chiavedt group by attribute7";
JavaSchemaRDD rdd=sqlContext.sql(query);
System.out.println("count="+rdd.count());
Если я заставлюbroadcastHashJoin (SET spark.sql.autoBroadcastJoinThreshold=290000000)
и использовать 5 исполнителей на 5 узле с 8 ядрами и 20 Гб памяти, это выполняется за 100 секунд. Если я не включаю трансляцию, она выполняется за 30 секунд.
Нотабене таблицы хранятся в файле Parquet.