其他分享
首页 > 其他分享> > flink1.14.0中集成hive3.1.2

flink1.14.0中集成hive3.1.2

作者:互联网

不想看太多的话,直接拉到第二部分操作步骤:


 

1. 是解决过程:


在flink1.14.0中已经移除sql-client-defaults.yml配置文件了。

参考地址:https://issues.apache.org/jira/browse/FLINK-21454

 

 

于是我顺着这个issue找到了FLIP-163这个链接。

https://cwiki.apache.org/confluence/display/FLINK/FLIP-163%3A+SQL+Client+Improvements

Use commands to configure the client
Currently sql-client uses a YAML file to configure the client, which has its own grammar rather than the commands used in the client. 
It causes overhead for users because users have to study both gramars and it's very tricky for users to debug the YAML problems.
Considering the Table Api has developed sophisticated grammar, it's better to use the same commands in the client for users to
configure their settings including set the runtime/table settings and register Catalog/Module/Database/Table/Function. For better understanding, the chart below lists the relationship between YAML and the command in the client.

看不懂没关系,直接翻译:

 

也就是目前这个sql客户端还有很多bug,并且使用yaml文件和本身的命令语法会导致用户学习成本增加,所以在未来会放弃使用这个配置项,可以通过命令行模式来配置。

接着我们看到了在启动sql-client时,可以通过-i参数来额外指定配置。

 

 

 配置方式如下:

-- set up the default properties
SET sql-client.execution.mode=batch;
SET parallism.default=10;
SET pipeline.auto-watermark-interval=500;
 
-- set up the catalog
CREATE CATALOG HiveCatalog WITH (
  'type' = 'hive'
);
 
USE CATALOG HiveCatalog;
 
-- register the table
CREATE IF NOT EXISTS TABLE pageviews (
  user_id BIGINT,
  page_id BIGINT,
  viewtime TIMESTAMP,
  proctime AS PROCTIME()
) WITH (
  'connector' = 'kafka',
  'topic' = 'pageviews',
  'properties.bootstrap.servers' = '...',
  'format' = 'avro'
);
 
CREATE IF NOT EXISTS TABLE pageviews_enriched (
  user_id BIGINT,
  page_id BIGINT,
  viewtime TIMESTAMP,
  user_region STRING,
  WATERMARK FOR viewtime AS viewtime - INTERVAL '2' SECOND
) WITH (
  'connector' = 'kafka',
  'topic' = 'pageviews_enriched',
  ...
);

上面一大段配置,除了第一个hivecatalog的配置比较通用以外,其他的都是属于定制化的配置,视为具体的业务应用场景时,自己配置。

那么我们就参照这个自己写一个hivecatalog配置如下,文件为sql-conf.sql。

CREATE CATALOG myhive WITH (
    'type' = 'hive',
    'default-database' = 'default',
    'hive-conf-dir' = '/opt/local/hive/conf',
    'hadoop-conf-dir'='/opt/local/hadoop/etc/hadoop/'
);
-- set the HiveCatalog as the current catalog of the session
USE CATALOG myhive;

将该文件保存到flink/conf/文件下当做一个通用的配置吧。

然后启动方式如下:

bin/sql-client.sh embedded -i conf/sql-conf.sql

还是没有发现hive的文件,于是想到官网的连接hive的包如下:

 

 

 下载对应的包,安装,后面遇到兼容性问题,修改包后即可解决。

 

 

 

 


 2. 操作步骤:


 

1. 下载flink1.14.0的包,解压缩。

2. 配置系统环境变量/etc/profile和flink的配置文件flink-conf.yaml

/etc/profile 增加配置如下(这里默认jdk,haodoop都配置好):

#flink config
export HADOOP_CLASSPATH=`hadoop classpath`
export FLINK_HOME=/opt/local/flink
export PATH=$PATH:$FLINK_HOME/bin

flink-conf.yaml配置如下:

  # 修改了一个task可以使用2个slot

  taskmanager.numberOfTaskSlots: 2

# 增加一行
classloader.check-leaked-classloader: false

在bin/config.sh中第一行也添加了 以下环境变量

export HADOOP_CLASSPATH=`hadoop classpath`

 

3. 新增sql-conf.sql配置文件,配置hivecatalog

CREATE CATALOG myhive WITH (
    'type' = 'hive',
    'default-database' = 'default',
    'hive-conf-dir' = '/opt/local/hive/conf',
    'hadoop-conf-dir'='/opt/local/hadoop/etc/hadoop/'
);
-- set the HiveCatalog as the current catalog of the session
USE CATALOG myhive;

4. 下载连接hive的包

官网地址如下:https://nightlies.apache.org/flink/flink-docs-release-1.14/zh/docs/connectors/table/hive/overview/

 

由于要根据不同的地址下载不同的版本,并且要根据自己使用的scala版本来选择不同的jar。这里给出这个链接的的ftp目录可以自己选择。

我的hive是3.1.2,但是由于给出的连接是scala2.11的,所以我顺着这个地址找到2.12版本的如下:

https://repo.maven.apache.org/maven2/org/apache/flink/

最终的地址:这个包有46.4m大小。

https://repo.maven.apache.org/maven2/org/apache/flink/flink-sql-connector-hive-3.1.2_2.12/1.14.0/

 

5. 解决jar包冲突问题

由于下载的这个sql包包含的guava版本和hadoop版本有冲突,所以操作如下:

用压缩软件打开

找到com/google,然后把这个google全部删除。(注意:不需要解压缩,直接右键删除)

删除完后,关闭窗口,这时候只有43.4m了。

 

 将包上传到flink/lib文件夹中,这个lib中只是添加一个jar包。

 

 6. 启动测试

bin/sql-client.sh embedded -i conf/sql-conf.sql

注意看到success表示执行成功。

 

 

 

 

 

官方其实在操作hive时,建议使用hive方言的,可以在命令行设置hive方言:

set table.sql-dialect=hive;

 

 

后面查询表信息还有问题,待解决。

 

标签:集成,flink,hive3.1,hive,hadoop,client,conf,sql,flink1.14
来源: https://www.cnblogs.com/30go/p/15370240.html