Кто-нибудь знает, поддерживает ли OrcTableSource файловую систему S3? - PullRequest
0 голосов
/ 22 ноября 2018

У меня возникают проблемы с использованием OrcTableSource для извлечения файла Orc из облачного хранилища объектов (IBM COS), фрагмент кода приведен ниже:

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: файл /so.orc не существует в org.apache.hadoop.fs.RawLocalFileSystem.deprecatedGetFileStatus (RawLocalFileSystem.java:611) вorg.apache.hadoop.fs.RawLocalFileSystem.getFileLinkStatusInternal (RawLocalFileSystem.java:824) в org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus (RawLocalFileSystem.java:601) в org.apacheFileFFFilterFileSystem.java:428) в org.apache.hadoop.fs.ChecksumFileSystem $ ChecksumFSInputChecker. (ChecksumFileSystem.java:142) в org.apache.hadoop.fs.ChecksumFileSystem.open (ChecksumFileSystem.java:apache. At.)hadoop.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.invoke (DataSourceTask.java:170) в org.apache.flink.runtime.taskmanager.Task.run (Task.java:711) на java.lang.Thread.run (Thread.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);

1 Ответ

0 голосов
/ 22 ноября 2018

Проблема в том, что OrcRowInputFormat Флинка использует две разные файловые системы: одну для генерации входных разбиений и одну для чтения фактических входных разбиений.Для первого он использует абстракцию FileSystem Флинка, а для второго - FileSystem от Hadoop.Поэтому вам необходимо настроить конфигурацию Hadoop core-site.xml так, чтобы она содержала следующий фрагмент

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

См. эту ссылку для получения дополнительной информации о настройке S3 для Hadoop.

Это ограничение OrcRowInputFormat Флинка и должно быть исправлено.Я создал соответствующий выпуск .

...