1
我在一個表示相同數據模式的不同表格的地方有大量的parquet文件,我想將它們合併成一個大的RDD。理想情況下,我想要做一個映射減少,其中映射器發射小RDD,減速器合併它們。但是,我無法弄清楚如何在映射器中發射RDD。有任何想法嗎?如何使用Spark Map Reduce將一堆鑲木地板文件結合在一起?
下面的第一行生成目錄中的文件列表,第二行應生成完整的RDD。但是,它不能序列化錯誤,因爲我不認爲你可以在地圖實例中創建一個RDD。
arr = map(lambda x: ["/mnt/s3/rds/27jul2017-parquet/%s-%s-%s.parquet" % (x[0], x[1], x[2]), x[1].zfill(10), x[2].zfill(10)], map(lambda x: x.name.split('.')[0].split('-'), dbutils.fs.ls('/mnt/s3/rds/27jul2017-parquet/')))
result = sorted(arr, key=lambda x: x[1])
sc.parallelize(arr).map(lambda x: (1, spark.read.parquet(x[0]))).reduceByKey(lambda x,y: x.unionAll(y))
https://stackoverflow.com/a/37257709/647053 –
可能重複[閱讀實木複合地板文件從多Ple目錄在Pyspark](https://stackoverflow.com/questions/37257111/reading-parquet-files-from-multiple-directories-in-pyspark) –
也看看https://stackoverflow.com/questions/37257111/讀取地板文件從多個目錄在pyspark –