我创建了一个table1(由batchDate和batchID划分),包含11,000列。 table1通过其他一些过程加载了零件文件,通常有30个零件文件,每个文件的平均大小为8 MB。我正在编写一个过程,以在对该表重新分区后将其从该表1插入到另一个表2中。我正在将动态值传递给重新分区方法,这意味着,如果我希望每个分区都具有100 MB,则我要计算源文件夹中存在的数据大小,并将其除以100 MB。
因此,对于任何给定的批次,潜在的分区将是=源文件夹的大小/ 100 MB。
但是对于源文件夹中存在的226 MB数据,它甚至无法完成此写入操作,并且将永远运行。
val df = spark.sql("select * from table1 where batchdt='20190716' and batchid = '20190716073'")
spark.sql("set hive.exec.dynamic.partition.mode=nonstrict")
df.repartition(2).write.insertInto("table2")
使用config运行上述代码:
spark-shell --master yarn --driver-memory 3g --num-executors 3 --executor-cores 3 --executor-memory 2g
不确定我在这里想念什么。非常感谢您的帮助。