首页 > 解决方案 > Apache Beam TextIO.read().from() 不解释文件模式中的转义特殊字符

问题描述

环境

设置

$ mkdir -p /tmp/beam
$ echo "test" >> "/tmp/beam/test*.txt"

测试管道

public class PipelineTest {

  @Test
  public void test() {
    Pipeline p = TestPipeline.create().enableAbandonedNodeEnforcement(false);

    String filename = "/tmp/beam/test\\*.txt";

    PCollection<String> input = p.apply(TextIO.read().from(filename));
    PAssert.that(input).containsInAnyOrder("test");

    p.run();
  }
}

此测试失败并显示以下消息。

[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 10.66 s <<< FAILURE! - in PipelineTest
[ERROR] test  Time elapsed: 10.645 s  <<< ERROR!
org.apache.beam.sdk.Pipeline$PipelineExecutionException: java.io.FileNotFoundException: No files matched spec: /tmp/beam/test\*.txt
        at PipelineTest.test(PipelineTest.java:28)
Caused by: java.io.FileNotFoundException: No files matched spec: /tmp/beam/test\*.txt

如何读取包含星号或其他特殊字符的文件?

标签: apache-beam

解决方案


现在你只需要重命名这些文件。我已经提交了https://issues.apache.org/jira/browse/BEAM-13231


推荐阅读