本地文件上的Apache Beam TextIO通配符

时间:2017-04-07 14:00:10

标签: apache-beam

我无法使用通配符" *"根据下面的例外情况,使用TextIO和本地文件作为底层库似乎不支持它。如果我使用Google Cloud存储路径,则代码可以正常使用通配符。我是否需要以任何方式逃避通配符?

java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:293)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.nio.file.InvalidPathException: Illegal char <*> at index 36: C:\input\*
        at sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)
        at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
        at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
        at sun.nio.fs.WindowsPath.parse(WindowsPath.java:94)
        at sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:255)
        at java.nio.file.Paths.get(Paths.java:84)
        at org.apache.beam.sdk.util.FileIOChannelFactory.specToFile(FileIOChannelFactory.java:81)
        at org.apache.beam.sdk.util.FileIOChannelFactory.match(FileIOChannelFactory.java:92)
        at my.package.XmlRawIO$Read$Bound.expand(XmlRawIO.java:235)
        at my.package.XmlRawIO$Read$Bound.expand(XmlRawIO.java:151)
        at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:475)
        at org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:389)
        at org.apache.beam.sdk.values.PBegin.apply(PBegin.java:47)
        at org.apache.beam.sdk.Pipeline.apply(Pipeline.java:160)
        at my.package.PushEnactorTransactions.main(PushTransactions.java:70)
        ... 6 more

1 个答案:

答案 0 :(得分:1)

从历史上看,Apache Beam中对本地文件系统的支持不支持Windows操作系统上的模式匹配。这不适用于任何其他情况 - 其他操作系统上的本地文件系统,任何操作系统上的Google云端存储等都按预期工作。

最近这个领域有很多改进,还有一些正在进行中。我相信这个特定的例外是固定的,所以我鼓励我再试一次更新的版本。