Re: flink-1.11.1 Table API /SQL 无法写入hive orc表

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: flink-1.11.1 Table API /SQL 无法写入hive orc表

amenhub@163.com
hi Jian Wang,

根据我的理解,在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

best,
amenhub

 
发件人: Jian Wang
发送时间: 2020-08-31 21:55
收件人: user-zh
主题: 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集成成功的范例参考吗?
 
谢谢
 
 
王剑
Reply | Threaded
Open this post in threaded view
|

Re: flink-1.11.1 Table API /SQL 无法写入hive orc表

Rui Li
没错,flink-sql-connector-hive-2.2.0可以支持Hive 2.0.0 ~ 2.2.0.
具体每个flink-sql-connector-hive可以支持的hive版本请参考官网 [1]。
关于TypeDescription.fromString的异常可能是遇到了已知问题 [2][3]。可以用最新1.11分支的代码试试看能不能解决。

[1]
https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/hive/#dependencies
[2] https://issues.apache.org/jira/browse/FLINK-18659
[3] https://issues.apache.org/jira/browse/FLINK-18942

On Tue, Sep 1, 2020 at 10:01 AM [hidden email] <[hidden email]> wrote:

> hi Jian Wang,
>
> 根据我的理解,在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
>
> best,
> amenhub
>
>
> 发件人: Jian Wang
> 发送时间: 2020-08-31 21:55
> 收件人: user-zh
> 主题: 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集成成功的范例参考吗?
>
> 谢谢
>
>
> 王剑
>


--
Best regards!
Rui Li