如何在 Google Dataflow 流媒体模板中使用正则表达式?

Posted

技术标签:

【中文标题】如何在 Google Dataflow 流媒体模板中使用正则表达式?【英文标题】:How to use regular expression in Google Dataflow streaming templates? 【发布时间】:2020-12-26 19:04:18 【问题描述】:

使用 Dataflow 流模板,即 Cloud Storage Text to BigQuery (Stream) 模板,过去可以将“inputFilePattern”(即:您要处理的文本的 Cloud Storage 位置)描述为一个正则表达式。例如,您可以输入 gs://my-bucket/my-files/file-to-upload* 作为参数,然后将流式传输所有以“file-to-upload”开头的文件。

不幸的是,它现在抛出此错误消息:“找不到对象。”

是否有其他方法可以使用与 BigQuery 类似的命名约定从谷歌存储位置上传所有文件?

请看下面的截图:

提前致谢。

【问题讨论】:

模板仍然支持匹配文件模式。您能否分享您的存储桶和文件夹的屏幕截图以及您用于提交作业的参数 您好,贾亚德普。请参阅我上面的编辑。非常感谢。 【参考方案1】:

这看起来像是 UI 中的一个错误,您可以在通过命令行提交作业时传递文件模式。源代码将文件模式作为输入,因此实际工作应该没有任何问题

    PCollectionTuple transformedOutput =
        pipeline

            // 1) Read from the text source continuously.
            .apply(
                "ReadFromSource",
                TextIO.read()
                    .from(options.getInputFilePattern())
                    .watchForNewFiles(DEFAULT_POLL_INTERVAL, Growth.never()))

【讨论】:

Jayadeep 是正确的。 GCS 位置选择器尚不支持正则表达式验证。

以上是关于如何在 Google Dataflow 流媒体模板中使用正则表达式?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 google-dataflow 中读取 cassandra

在 google-cloud-dataflow 中使用文件模式匹配时如何获取文件名

如何在 Google Dataflow 中添加列以查询结果

Google Dataflow - 如果写入本地服务器,如何在 java 中指定 TextIO?

如何在Apache Beam / Google Dataflow中使用ParseJsons?

如何修复 Google DataFlow Pipeline (args) 空指针异常?