背景
此次需要将10张表[A、B、C、D、E、F、G、H、I、J]的数据union与表∂中的一个字段进行join,以达到筛选数据的目的;其中表A的数据量约为320亿,其余9个表各自数据量约为20亿,表∂的数据量约为900万;
资源使用情况上升至100 executor-nums * 3 executor-core * 20G executor-memory,但还是卡在join的stage上,重复失败多次后,整个job失败;
实现方法
方法1
val tableArr = Array("table_a_name", "table_b_name", "table_c_name", "", "table_d_name", "table_e_name", "table_f_name", "table_g_name", "table_h_name", "table_i_name", "table_j_name")
val data_df = tableArr.map(table_name =>
spark.sql(
s"""
|SELECT a, b, c
|FROM ${table_name}
|""".stripMarigin)
).reduce(_.union(_))
val filter_table_tmp = spark.sql(
s"""
|SELECT a
|FROM ∂
|""".stripMarigin)
val result = data_df.joi