TEXTIO.使用模式{}从GCS读取多个文件

CCC*_*CCC 3 glob google-cloud-storage google-cloud-dataflow apache-beam

我尝试使用以下内容

TextIO.Read.from("gs://xyz.abc/xxx_{2017-06-06,2017-06-06}.csv")
Run Code Online (Sandbox Code Playgroud)

我得到的那种模式不起作用

java.lang.IllegalStateException: Unable to find any files matching StaticValueProvider{value=gs://xyz.abc/xxx_{2017-06-06,2017-06-06}.csv}
Run Code Online (Sandbox Code Playgroud)

即使这两个文件确实存在.我尝试使用类似表达式的本地文件

TextIO.Read.from("somefolder/xxx_{2017-06-06,2017-06-06}.csv")
Run Code Online (Sandbox Code Playgroud)

这确实很好用.

我原以为GCS中的文件会有各种各样的支持,但不是.这是为什么?在那里完成我正在寻找的东西?

Mat*_*ens 9

这可能是另一种选择,除了斯科特的建议和你对他答案的评论:

您可以使用要读取的路径定义列表,然后对其进行迭代,以通常的方式创建多个PCollections:

PCollection<String> events1 = p.apply(TextIO.Read.from(path1));
PCollection<String> events2 = p.apply(TextIO.Read.from(path2));
Run Code Online (Sandbox Code Playgroud)

然后创建一个PCollectionList:

PCollectionList<String> eventsList = PCollectionList.of(events1).and(events2);
Run Code Online (Sandbox Code Playgroud)

然后将此列表展平到您的主要输入的PCollection中:

PCollection<String> events = eventsList.apply(Flatten.pCollections());


归档时间:

查看次数:

3309 次

最近记录:

8 年,7 月 前