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
让人抓狂?
库不允许在路径名中使用 :
。显然这可以更好地处理。
我有上传到 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
让人抓狂?
库不允许在路径名中使用 :
。显然这可以更好地处理。