gpt4 book ai didi

python - 如何将分区保存到特定名称的文件?

转载 作者:太空宇宙 更新时间:2023-11-03 17:13:49 25 4
gpt4 key购买 nike

我有一个分区的 RDD,希望将每个分区保存到具有特定名称的单独文件中。这是我正在使用的重新分区的 rdd:

# Repartition to # key partitions and map each row to a partition given their key rank
my_rdd = df.rdd.partitionBy(len(keys), lambda row: int(row[0]))

现在,我想在每个分区上保存AsTextFile()。当然,我应该做类似的事情

my_rdd.foreachPartition(lambda iterator_obj: save_all_items_to_text_fxn)

但是,作为测试,我定义了 save_all_items_to_text_fxn() 如下:

def save_all_items_to_text_fxn(iterator_obj):
print 'Test'

...我注意到它实际上只被调用了两次,而不是 |partitions|次数。

我想知道我是否走错了路。谢谢

最佳答案

I would like to find out if I am on the wrong track.

嗯,看起来你就是这样。您将无法在分区迭代器上调用 saveAsTextFile (更不用说从任何操作或转换内部提及),因此整个想法没有意义。使用外部库从 Python 代码写入 HDFS 并非不可能,但我怀疑这是否值得大惊小怪。

您可以使用标准 Spark 工具来处理此问题:

  1. 一种昂贵的方式

    def filter_partition(x):
    def filter_partition_(i, iter):
    return iter if i == x else []
    return filter_partition_

    for i in rdd.getNumPartitions():
    tmp = dd.mapPartitionsWithIndex(filter_partition(i)).coalesce(1)
    tmp.saveAsTextFile('some_name_{0}'.format(i))
  2. 一种廉价的方法。

    每个分区都保存为一个名称,其名称与分区号相对应。这意味着您可以使用 saveAsTextFile 简单地保存整个 RDD,然后重命名各个文件。

关于python - 如何将分区保存到特定名称的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33837340/

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