跳过正文
  1. 博客/
  2. 后端/
  3. 软件/

FlinkSQL Client实战

·2 分钟· ·
后端 软件
目录

Flink SQL Client 是一个帮助用户直接运行SQL,而不要进行编译运行的工具,首先他支持多个数据源,在Flink1.9.0开始支持了Hive,并且在Flink 1.10.0时候发布了企业级Hive支持,这样就把批处理和流计算结合了起来,这篇博客详解了Hive在Flink SQL Client中的安装和使用,以及探索在上面做的一些复杂开发实践

Hive安装
#

依赖的jar包如下

	antlr4-runtime-4.5.jar        
  
	flink-connector-hive_2.11-1.9.0.jar
  
	antlr-runtime-3.5.2.jar        
  
	flink-hadoop-compatibility_2.11-1.9.0.jar
  
	datanucleus-api-jdo-4.2.4.jar  
  
	hive-exec-2.3.4.jar
  
	datanucleus-api-jdo-5.2.2.jar 
  
	javax.jdo-3.2.0-m3.jar
  
	datanucleus-core-4.1.17.jar   
  
	datanucleus-rdbms-4.1.9.jar    
  
	flink-shaded-hadoop-2-uber-2.7.5-8.0.jar
  

将这些复制到flink/lib目录下面即可,下面是下载链接
1.10.0 flink hive jar Google Driver 下载地址
1.9.0 flink hive jar Google Driver下载地址
百度云提取码: 1.9.0 flink hive 百度云下载地址
百度云提取码: e9c7 链接: 1.10.0 flink hive 百度云下载地址

Hive使用中遇到的问题
#

1. 目前只支持2.3.4和1.2.1
2. 支持的读取的hive类型有限,时间类型只支持1个Date
PS: Sqoop导入数据库表到Hive的时候,只能将DateTimeTimeStamp设置为String,否则无法在Client中使用
3. 跨越Catalog读取表的时候Hive不能存放在default(默认)数据库中,否则会解析异常

例如:想从Hive默认数据库中获取表a,使用insert b select * from hive_catalog.default.a会解析失败

4. Hive不支持写入分区表,也不支持Overwrite,只支持append模式

目前flink-1.10已经支持多个Hive版本并且修复了上面所遇到的问题,但是目前在SQL Client里面使用较为麻烦,需要自己安装缺少的jar包(而且版本不兼容的话会出现各种奇奇怪怪的bug),所以我写了一个项目把所以的依赖打包到一起这样只要一行命令就可以生成所需要的依赖,而且支持多个Hive版本

下面是这个项目的github地址

Flink SQL Client Hive 依赖生成器


未完待续

相关文章

Apache Atlas 2.0.0部署实践
·6 分钟
后端 软件
Atlas 是一个可扩展和可扩展的核心基础治理服务集 - 使企业能够有效地和高效地满足 Hadoop 中的合规性要求,并允许与整个企业数据生态系统的集成。[来自百科]
Build Hadoop Cluster in One Computer
·4 分钟
后端 软件
If you are hadoop novice, I strongly suggest you beginning your study from single node building,you can learn from this website, after you having finshed build one single node, then you can reading my blog to learn how to run a N-node clusters just in your computer.
Ubuntu16.04安装Tensorflow的CPU优化
·3 分钟
后端 软件
由于我的笔记本是农卡,没法安装CUDA加速,而且我的显卡只有2G显存,安装OpenCL费力不讨好,而且由于我有一个Google云的300美元的体验,所以可以在Google云上使用TPU来进行加速,所以我就干脆不安装显卡加速,但是Tensorflow提供了指令集优化,由于默认使用pip安装没有提供这个功能,所以只能手动编译安装
巧用Git钩子
·5 分钟
后端 软件 Git
以前听学长提过Git钩子,但是自己一直没有仔细了解过,记得我还写过一个github更新的Python包,现在想想其实用自带的钩子就能很好的完成
ansible管理nginx负载均衡
·4 分钟
后端 软件
前言 # 因为手头自己有三个服务器,所以想折腾一下负载均衡。
git 工作流程
·3 分钟
后端 软件
git是当今流行的版本控制工具,一般我们可能只要会push, pull就可以了, 但是当我们同别人共同工作的时候,我们必须要了解git协同开发的一些重要流程.