[英]How to Split a large parquet file to multiple parquet and save in different hadoop path by time column
[英]split large file into small files and save in different paths using spark
如何將大文件/ RDD / DF拆分為小文件並保存到其他路徑。
例如:如果文本文件中有一個包含用戶名(單列)的文件,並且想要將其拆分為N個文件,然后將該N個文件寫入不同的目錄。
val x=20
val namesRDD=sc.textfile("readPath")
val N = namesRDD.count/x
如何將nameRDD拆分為N個文件並將其寫入“ savepath / N /”中-即第一個文件寫入“ savepath / 1 /”,第二個文件寫入“ savepath / 2 /”,依此類推。
使用repartitionByRange
將使您以這種方式拆分數據。
例:
df.repartitionByRange($"region").write.csv("data/regions")
這將為數據中出現的每個region
創建一個零件文件。 如果您有10個區域,則將有10個不同的part-
文件。
如果要指定自己的名稱,則必須應用自己的函數使用foreachPartition
保存文件。
df.repartitionByRange($"region")
.foreachPartition(region => {
// custom implementation
})
使用repartition將文件/ df分成N個部分(如果沒有要執行repartitionByRange的列並且想要隨機分割)
df.repartition(N)
.write.text(storePath)
然后讀取這些分區(在該分區的Df上執行任何操作)
for (i <- 0 until N) {
val parts = f"${i}%04d"
val splitPath = s"${path}/part-0${partNumber}-*"
//read data from the `splitPath`
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.