我在google云存储桶中有一个压缩文件。此文件包含一个大的csv文件和一个基于xml的小元数据文件。我想提取两个文件并确定元数据并处理csv文件。我正在使用Python SDK,管道将在某个时刻在Google Dataflow上运行。
目前的解决方案是使用Google Cloud Functions提取这两个文件,并使用从xml文件解析的参数启动管道。
我想取消Google Cloud功能并在Apache Beam中处理压缩文件。管道应处理XML文件,然后处理csv文件。
但是,我坚持将这两个文件解压缩到单独的集合中。我想了解我的解决方案是否有缺陷,或者如果没有,是一个如何在单个压缩文件中处理不同文件的示例。
答案 0 :(得分:1)
根据我的理解,这是通过梁中任何现有的文本IO无法实现的。
您的设计问题在于,您正在强制执行文件读取顺序的依赖关系(在处理CSV文件之前必须读取元数据xml以及理解CSV的逻辑。任何具体文本IO都不支持这两者。
如果您确实希望拥有这种灵活性,我建议您查看vcfio。您可能还想编写自己的继承自filebasedsource.FileBasedSource
的读者。 vcfio
的实现与您的案例有一些相似之处,因为总有一个标题解释了如何解释VCF-formatted文件中的CSV部分。
实际上,如果你能以某种方式重写你的xml metdata并将其作为标题添加到csv文件中,你可能会使用vcfio
代替。