gpt4 book ai didi

hadoop - 如何使用 Spark Map Reduce 将一堆 Parquet 文件联合在一起?

转载 作者:可可西里 更新时间:2023-11-01 15:09:56 25 4
gpt4 key购买 nike

我在一个目录中有大量 Parquet 文件,这些文件代表相同数据模式的不同表,我想将它们合并到一个大 RDD 中。理想情况下,我想做一个 map reduce,其中 mapper 发出小的 RDD,reducer 合并它们。但是,我不知道如何在映射器中发出 RDD。有什么想法吗?

下面的第一行生成目录中的文件列表,第二行应该生成完整的 RDD。但是,它给出了无法序列化的错误,因为我认为您不能在 map 实例中创建 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) )

最佳答案

不是在 spark.read.parquet 中指定文件而是指定目录,您将获得包含所有数据的数据帧(不是 RDD):

df = spark.read.parquet("/mnt/s3/rds/27jul2017-parquet/")

map 遍历 RDD 的行以操作更改,它无法加载文件,如果它最终得到一个行是数据帧的 RDD...

关于hadoop - 如何使用 Spark Map Reduce 将一堆 Parquet 文件联合在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46078370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com