我有大量的csv文件(大约20000个),其中大多数文件具有大约4000列,其中10%的文件可以具有更少或更多的列。 我想将这些文件从S3加载到spark中,从CSV文件推断架构,然后合并该架构以处理混合的架构文件。然后,在减少分区数量之后,以拼花形式写回S3。
val df = spark.read.format("csv").option("header", "true").option("mergeSchema", "true").option("inferSchema", "true").load(<s3-in-path>)
df.coalesce(2).write.mode("overwrite").parquet(<s3-out-path)
但这要花几个小时才能完成,即使我扔了100个CPU内核。
有人领导如何处理此类数据吗?
答案 0 :(得分:0)
如果这是一项繁重的工作,并且数据集小于1 TB,则您是否考虑过仅在本地下载并以这种方式进行。读取所有源文件一次,您就可以随心所欲地玩Spark CSV加载,而不必担心节流或AWS费用