作者:mobiledu2502876597 | 来源:互联网 | 2023-10-12 14:42
本文中使用的flink版本1.13,hive版本2.3.4
使用工具idea2020
有个朋友问了我这个问题,他说他试了很多网上的方法都跑不了,我研究了下,好像给的依赖都不全。
在官网中的有解决方式,但主要篇幅是在服务器上如何处理,在程序中,只告诉我们需要添加三个依赖,这个其实是不全的。解决这个问题主要麻烦也就是依赖,以下是我能成功访问的依赖:
1.13.52.11org.apache.flinkflink-connector-hive_${scala.version}${flink.version}org.apache.flinkflink-table-api-java-bridge_${scala.version}${flink.version}org.apache.flinkflink-table-planner-blink_${scala.version}${flink.version}org.apache.hivehive-exec2.3.4org.apache.hadoophadoop-common2.7.4org.apache.hadoophadoop-client2.7.4org.apache.hadoophadoop-hdfs2.7.4org.apache.flinkflink-clients_${scala.version}${flink.version}org.anarres.lzolzo-hadoop1.0.5
最后一个依赖是因为我的表采用了lzo,所以导入的依赖,如果你的表未使用lzo可以不用
大致解释下其他的依赖:官网要求的,hive数据在hdfs上,需要hadoop的依赖,flink客户端,然后得多加个flink-table-planner-blink这个依赖,最后有点就是hive-exec得依赖得放在blink的后面。
测试代码:
EnvironmentSettings settings = EnvironmentSettings.newInstance().useBlinkPlanner().build();TableEnvironment tenv = TableEnvironment.create(settings);String name = "zxchive";//查询的database名称String database = "default";//hive配置文件的位置,里面要有 hive-site.xmlString hiveConfDir = "data/";//创建对象,注册,使用HiveCatalog hive = new HiveCatalog(name, database, hiveConfDir);tenv.registerCatalog("zxchive",hive);tenv.useCatalog("zxchive");
// TableResult table = tenv.executeSql("show tables");
// table.print();//执行sqlTable table2 = tenv.sqlQuery("select * from p_begin limit 10");table2.execute().print();
代码的话比较简单,没什么需要解释了,注意一点就是需要hive-site.xml这个文件,别忘了。
最后就是:最新的1.14的,我瞟了一眼,代码写法变了,本文应该不适用了。
官网地址:
flink1.13的:Overview | Apache Flinkhttps://nightlies.apache.org/flink/flink-docs-release-1.13/docs/connectors/table/hive/overview/
flink1.14的:把上面的地址的1.13改成1.14就行了
最最最后,放个成功的截图,以证明可用: