开发者社区> 问答> 正文

flink-1.11.1 Table API /SQL 无法写入hive orc表怎么办?

Hi all,

我基于flink 1.11 + hadoop 3.0.0 + hive 2.1.1 , flink on yarn模式,在streaming job上的Table API上执行flink sql实时写入hive表。

根据文档 https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/hive/ https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/hive/ 去配置,现在遇到flink和hive的依赖问题。

在项目内的pom上,所有相关hive相关依赖都是provided,在flink lib下放进flink-sql-connector-hive-2.2.0_2.11-1.11.1.jar, 提交任务的时候,会出现hive-exec.jar的冲突导致java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hive.ql.io.orc.OrcInputFormat (因为我的hive是2.1.1版本,flink没有提供flink-sql-connector-hive的2.1.1版本,所以我用的和它最近的2.2.0)。

我又尝试了根据我的hive版本2.1.1, 去根据flink源码,把hive-exec改成2.1.1去手动打包flink-sql-connector-hive-2.1.1_2.11-1.11.1.jar放到flink lib下, 但是发现flink-sql-connector-hive里面的orc-core-1.4.3和hive-exec-2.1.1冲突,java.lang.NoSuchMethodError: org.apache.orc.TypeDescription.fromString(Ljava/lang/String;)Lorg/apache/orc/TypeDescription;

我看到在flink提供的flink-sql-connector-hive中确实没有2.1.1的版本,是这个版本无法和flink兼容吗?或 有flink 1.11和hive 2.1.1集成成功的范例参考吗?*来自志愿者整理的flink邮件归档

展开
收起
游客sadna6pkvqnz6 2021-12-07 16:41:05 1063 0
1 条回答
写回答
取消 提交回答
  • 根据我的理解,在flink lib目录下导入官方的flink-sql-connector-hive-2.2.0_2.11-1.11.1.jar是指hive[2.0.0-2.2.0]版本都可以使用此依赖。

    关于你的问题我曾经遇到过,hive也是2.1.1,我的demo参考[1]可以运行成功,而不需要额外导入flink-sql-connector-hive-2.2.0_2.11-1.11.1.jar, 只需要把[1]中的依赖改成provided并把其jar包导入flink/lib即可。

    希望能帮到你,

    [1] https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/hive/#program-maven*来自志愿者整理的flink

    2021-12-07 20:15:29
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Hive Bucketing in Apache Spark 立即下载
spark替代HIVE实现ETL作业 立即下载
2019大数据技术公开课第五季—Hive迁移到MaxCompute最佳实践 立即下载