有人知道OrcTableSource是否支持S3文件系统吗



我在使用OrcTableSource从云对象存储(IBM COS(获取Orc文件时遇到了一些问题,代码片段如下:

OrcTableSource soORCTableSource = OrcTableSource.builder() // path to ORC
.path("s3://orders/so.orc") // s3://orders/so.csv
// schema of ORC files
.forOrcSchema(OrderHeaderORCSchema)
.withConfiguration(orcconfig)
.build();

这条路似乎不正确,但有人能帮上忙吗?非常感谢!

由java.io.FileNotFoundException引起:File/so.oc不存在在org.apache.hadop.fs.RawLocalFileSystem.depletedGetFileStatus(RawLocalFileSystem.java:611(在org.apache.hadop.fs.RawLocalFileSystem.getFileLinkStatusInternal(RawLocalFileSystem.java:824(在org.apache.hadop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:601(在org.apache.hoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:428(在org.apache.hadop.fs.ChecksumFileSystem$ChecksumFSInputChecker。(ChecksumFileSystem.java:142(在org.apache.hadop.fs.ChecksumFileSystem.open(ChecksumFileSystem.java:346(网址:org.apache.hoop.fs.FileSystem.open(FileSystem.java:768(org.apache.orc.impl.ReaderImpl.extractFileTail(ReaderImpl.java:528(网址:org.apache.orc.impl.ReaderImpl.(ReaderImpl.java:370(org.apache.orc.OrcFile.createReader(OrcFile.java:342(org.apache.flink.orc.OrcRowInputFormat.open(OrcRowInputFormat.java:225(在org.apache.flink.orc.OrcRowInputFormat.open(OrcRowInputFormat.java:63(在org.apache.flink.runtime.operators.DataSourceTask.ioke(DataSourceTask.java:170(在org.apache.flink.runtime.taskmanager.Task.run(Task.java:711(java.lang.Thread.run(线程.java:748(

顺便说一句,我已经将flink-s3-fs-press设置为1.6.2,并正确运行了以下代码。问题仅限于OrcTableSource。

DataSet<Tuple5<String, String, String, String, String>> orderinfoSet =
env.readCsvFile("s3://orders/so.csv")
.types(String.class, String.class, String.class
,String.class, String.class);

问题是Flink的OrcRowInputFormat使用了两个不同的文件系统:一个用于生成输入拆分,另一个用于读取实际的输入拆分。前者使用Flink的FileSystem抽象,后者使用Hadoop的FileSystem。因此,您需要将Hadoop的配置core-site.xml配置为包含以下片段

<property>
<name>fs.s3.impl</name>
<value>org.apache.hadoop.fs.s3a.S3AFileSystem</value>
</property>

有关为Hadoop设置S3的更多信息,请参阅此链接。

这是Flink的OrcRowInputFormat的限制,应该加以修复。我已经创建了相应的问题。

最新更新