我在GCS中有csv(gzip压缩)文件。我想读取这些文件并将数据发送到BigQuery。
标题信息可以更改(虽然我事先知道所有列),所以只删除标题是不够的,不知何故我需要读取第一行并将列信息附加到剩余行。
怎么可能?
我首先想到我必须像这篇帖子那样实现自定义来源
Reading CSV header with Dataflow
但是使用这个解决方案,我不确定如何首先解压缩Gzip。我可以以某种方式使用withCompressionType
TextIO
吗?
(我找到了一个参数compression_type
in a python Class,但我使用的是Java,但在Java FileBasedSource
类中找不到类似的参数。)
此外,我觉得这有点过分,因为它使文件不可分割(虽然在我的情况下它没关系)。
或者我可以使用GoogleCloudStorage并直接在我的main()
函数中读取文件及其第一行,然后进入管道。
但它也很麻烦,所以我想确认在使用Dataflow中的标头时是否有任何最佳实践(数据流方式)来读取csv文件?