有人知道orctablesource是否支持s3文件系统吗?

ovfsdjhp  于 2021-06-21  发布在  Flink
关注(0)|答案(1)|浏览(440)

我在使用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:org.apache.hadoop.fs.rawlocalfilesystem.deprecatedgetfilestatus(rawlocalfilesystem)中不存在文件/so.orc。java:611)在org.apache.hadoop.fs.rawlocalfilesystem.getfilelinkstatusinternal(rawlocalfilesystem)上。java:824)位于org.apache.hadoop.fs.rawlocalfilesystem.getfilestatus(rawlocalfilesystem)。java:601) 在org.apache.hadoop.fs.filterfilesystem.getfilestatus(filterfilesystem。java:428)在org.apache.hadoop.fs.checksumfisystem$checksumfsinputchecker.(checksumfisystem。java:142)在org.apache.hadoop.fs.checksumfilesystem.open(checksumfilesystem。java:346)在org.apache.hadoop.fs.filesystem.open(filesystem。java:768)在org.apache.orc.impl.readerimpl.extractfiletail(readerimpl。java:528)在org.apache.orc.impl.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.invoke(datasourcetask。java:170)在org.apache.flink.runtime.taskmanager.task.run(task。java:711)在java.lang.thread.run(线程。java:748)
顺便说一下,我已经设置了flink-s3-fs-presto-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);
31moq8wy

31moq8wy1#

问题是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 应该是固定的。我已经创建了相应的问题。

相关问题