Parquet 读取文件给出 java.net.URISyntaxException: 绝对 URI 中的相对路径

Parquet Reading file gives java.net.URISyntaxException: Relative path in absolute URI

我有上传到 S3 的镶木地板文件,我将它们下载到一个文件夹中。以下代码报错:

Configuration conf = new Configuration();
Path path = new Path("/Users/mustafa/pqs/2018-02-16T08:30:23.570-d629f5af-23b8-44c7-bc41-ce6ad98b16cd.parquet");
ParquetFileReader file = ParquetFileReader.open(conf, path);
System.out.println(file.getFileMetaData().getSchema());

它试图找到 CRC 文件,但它们不存在。但它给出了一个奇怪的错误。

Exception in thread "main" java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: .2018-02-16T08:30:23.570-d629f5af-23b8-44c7-bc41-ce6ad98b16cd.parquet.crc
    at org.apache.hadoop.fs.Path.initialize(Path.java:205)
    at org.apache.hadoop.fs.Path.<init>(Path.java:171)
    at org.apache.hadoop.fs.Path.<init>(Path.java:93)
    at org.apache.hadoop.fs.ChecksumFileSystem.getChecksumFile(ChecksumFileSystem.java:90)
    at org.apache.hadoop.fs.ChecksumFileSystem$ChecksumFSInputChecker.<init>(ChecksumFileSystem.java:145)
    at org.apache.hadoop.fs.ChecksumFileSystem.open(ChecksumFileSystem.java:346)
    at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:769)
    at org.apache.parquet.hadoop.ParquetFileReader.<init>(ParquetFileReader.java:589)
    at org.apache.parquet.hadoop.ParquetFileReader.<init>(ParquetFileReader.java:575)
    at org.apache.parquet.hadoop.ParquetFileReader.open(ParquetFileReader.java:506)
    at com.opsgenie.sre.logmanagement.merge.ParquetMerger.main(ParquetMerger.java:11)
Caused by: java.net.URISyntaxException: Relative path in absolute URI: .2018-02-16T08:30:23.570-d629f5af-23b8-44c7-bc41-ce6ad98b16cd.parquet.crc
    at java.net.URI.checkPath(URI.java:1823)
    at java.net.URI.<init>(URI.java:745)
    at org.apache.hadoop.fs.Path.initialize(Path.java:202)
    ... 10 more

但是如果我将文件名移动到一个简单的名称 osman.parquet 它就可以了。为什么文件名 2018-02-16T08:30:23.570-d629f5af-23b8-44c7-bc41-ce6ad98b16cd.parquet 让人抓狂?

库不允许在路径名中使用 :。显然这可以更好地处理。

https://issues.apache.org/jira/browse/HDFS-13