首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flink-orc:无法在类路径中找到标识符“orc”的任何格式工厂

Flink-orc:无法在类路径中找到标识符“orc”的任何格式工厂
EN

Stack Overflow用户
提问于 2022-10-17 14:41:15
回答 2查看 57关注 0票数 0

我需要将表结果保存到S3上的orc中,我就是这样做的:

代码语言:javascript
复制
tEnv.createTemporaryTable("my_output_table", TableDescriptor.forConnector("filesystem")
                .schema(outputSchema)
                .option("path", s3OutputPath)
                .format(FormatDescriptor.forFormat("orc").build())
                .build());
finalResultToInsert.executeInsert("my_output_table");

但是,在运行时,它会引发

代码语言:javascript
复制
Caused by: org.apache.flink.table.api.ValidationException: Could not find any format factory for identifier 'orc' in the classpath.
    at org.apache.flink.table.filesystem.FileSystemTableSink.<init>(FileSystemTableSink.java:128) ~[flink-table_2.12-1.14.2.jar:1.14.2]
    at org.apache.flink.table.filesystem.FileSystemTableFactory.createDynamicTableSink(FileSystemTableFactory.java:87) ~[flink-table_2.12-1.14.2.jar:1.14.2]
    at org.apache.flink.table.factories.FactoryUtil.createTableSink(FactoryUtil.java:179) ~[flink-table_2.12-1.14.2.jar:1.14.2]
    at org.apache.flink.table.planner.delegation.PlannerBase.getTableSink(PlannerBase.scala:394) ~[flink-table_2.12-1.14.2.jar:1.14.2]
......

我已经包含了相关的依赖项。

代码语言:javascript
复制
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-orc_2.11</artifactId>
            <version>1.14.2</version>
        </dependency>

在生成的jar文件中,我可以看到flink orc类:

代码语言:javascript
复制
org/apache/flink/orc/
org/apache/flink/orc/AbstractOrcFileInputFormat.class
org/apache/flink/orc/OrcFileFormatFactory$1.class
org/apache/flink/orc/OrcFilters$LessThanEquals.class
org/apache/flink/orc/AbstractOrcFileInputFormat$OrcVectorizedReader.class
org/apache/flink/orc/OrcFilters$Not.class
org/apache/flink/orc/OrcFileFormatFactory.class
org/apache/flink/orc/OrcColumnarRowSplitReader.class
org/apache/flink/orc/OrcColumnarRowSplitReader$ColumnBatchGenerator.class
org/apache/flink/orc/AbstractOrcFileInputFormat$OrcReaderBatch.class
org/apache/flink/orc/OrcFilters$In.class
......

所以我真的不明白为什么它仍然找不到它的类路径。

另外,在这个项目中,我还包括了flink-avro依赖项,如果我将输出格式从orc更改为avro,它就会工作得很好。

同时,我也在执行AWS EMR的工作。EMR版本为6.6.0,Flink版本为1.14.2。https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-660-release.html

有人能帮忙吗?非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-20 14:31:16

好吧,看来我解决了这个问题

代码语言:javascript
复制
<dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-orc_2.11</artifactId>
            <version>1.14.2</version>
        </dependency>

到Maven pom中依赖项部分的顶部,它就可以工作了。我认为这只是由于类加载的顺序,所以放在前面可能会解决flink-orc依赖关系类加载期间的冲突,因为它将首先加载。

票数 0
EN

Stack Overflow用户

发布于 2022-10-20 10:19:57

如果我没弄错的话,兽人需要Hadoop。因此,您还应该添加org.apache.hadoop: Hadoop --公共的也可能添加其他Hadoop依赖项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74098958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档