pandas 如何在apache beam python中合并或合并pcollection(多个pardo产量)

thtygnil  于 12个月前  发布在  Apache
关注(0)|答案(1)|浏览(81)

我有一个自定义的ParDo函数,它从一个API获取数据,并在每次命中后生成一个pandas框架。
我执行了一些数据操作,最后我想把所有这些对象帧或pcollections组合成一个合并,然后把它们作为CSV文件写入磁盘。
下面是我的代码如何工作的基本表示:

class GetData(beam.DoFn):
    def __init__(self, hits):
        self.no_of_hits = hits

    def process(self, url):
        for i in range(no_of_hits):
            json = requests.get(url+no_of_hits)
            df = pd.json_normalize(json)
            yield df
    
with beam.Pipeline() as pipeline:
        data = (pipeline
            | "url to start the pipeline" >> beam.Create([url])
            | "get data from api" >>   beam.ParDo(GetData(hits)))
        wrangled = (... some basic manipulation to each dataframe)
        combine = ???

字符串
但我是新的Apache梁,所以,我不明白我怎么能做到这一点。
我尝试过使用beam.Flatten(),但它需要一个iterable作为输入。
Pcollection不是schema'd,也不是延迟梁框架
谢谢,任何帮助都是感激的

ovfsdjhp

ovfsdjhp1#

更新:使用pandas并不是一个好主意,因为@XQHu指出它不可扩展。
我现在只使用python,如果可能的话,可能会使用beam框架。
目前还没有像pandas那样简单的步骤来创建一个beam框架(通过文件加载数据会创建一个beam框架),可能需要一些变通方法。
波束赋形器可以利用分布式处理。

相关问题