Hive对接CSS服务
操作场景
利用Elasticsearch-Hadoop插件,完成Hive和CSS服务的Elasticsearch直接的数据交互,通过Hive外部表的方式,可以快速将Elasticsearch索引数据映射到Hive表中。
该章节适用于MRS 3.x及之后版本。
前提条件
已安装MRS的Hive服务和CSS的Elasticsearch服务,并且两个集群之间网络互通。
操作步骤
- 在云搜索服务的“集群管理”页面上,单击集群“操作”列的“Kibana”访问集群,在Kibana的左侧导航中选择“Dev Tools”,进入Console界面,输入以下命令创建索引“ddj_study_card_ratio_v12”:
PUT ddj_study_card_ratio_v12 { "mappings" : { "properties" : { "uniq_id" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } } } } }
返回如下结果表示索引创建成功:
{ "acknowledged" : true, "shards_acknowledged" : true, "index" : "ddj_study_card_ratio_v12" }
- 执行以下命令向“ddj_study_card_ratio_v12”索引中插入数据:
POST /ddj_study_card_ratio_v12/_doc/_bulk {"index":{}} {"id":"1", "uniq_id":"23323"}
当返回结果信息中“errors”字段的值为“false”时,表示导入数据成功。
- 根据当前CSS服务中的Elasticsearch版本在Past Releases下载对应的Jar包。
例如:Elasticsearch 7.6.2对应的Jar包为“elasticsearch-hadoop-7.6.2.jar”。
- Jar包版本需与CSS服务的Elasticsearch版本保持一致,本章节以开启安全模式的“Elasticsearch 7.6.2”集群为例进行相关操作,具体请以实际情况为准。
- 若有额外的自定义模块,也单独打包成一份Jar包。
- 将3的Jar包分别上传到所有的HiveServer所在节点的“/opt/Bigdata/third_lib/Hive”目录下,并执行以下命令修改权限。
chown omm:wheel -R /opt/Bigdata/third_lib/Hive
- 登录FusionInsight Manager,选择“集群 > 服务 > Hive > 实例”,勾选所有的HiveServer实例,选择“更多 > 重启实例”,重启HiveServer实例。
- 在Maven中心仓下载“commons-httpclient-3.1.jar”,并将该Jar包及3的Jar上传至集群中安装了HDFS和Hive客户端的任一的节点上。
- 以客户端安装用户,登录6上传了Jar包的节点。
- 执行以下命令认证用户。
cd 客户端安装目录
source bigdata_env
kinit 组件业务用户(未开启Kerberos认证的集群跳过此操作)
- 执行以下命令在HDFS上创建Jar包存放目录。
hdfs dfs -mkdir Jar包存放在hdfs中的路径
- 执行以下命令将6的Jar上传至HDFS中。
hdfs dfs -put Jar包存放路径 Jar包存放在hdfs中的路径
- 执行以下命令让Hive在执行命令行任务时加载指定Jar包。
beeline
add jar Jar包存放在hdfs中的路径;(每个Jar包分别执行一次该命令)
- 执行以下命令创建Elasticsearch外部表。
CREATE EXTERNAL TABLE `ddj_study_card_ratio_v12_test`( `uniq_id` string) ROW FORMAT SERDE 'org.elasticsearch.hadoop.hive.EsSerDe' STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler' WITH SERDEPROPERTIES ( 'field.delim'='', 'serialization.format'='') TBLPROPERTIES ( 'bucketing_version'='2', 'es.index.auto.create'='false', 'es.mapping.date.rich'='false', 'es.net.http.auth.pass'='Pzh6537projectx', 'es.net.http.auth.user'='elastic', 'es.nodes'='vpcep-e0b33065-75b7-4193-8395-dbd00d10bc39.cn-east-3.huaweicloud.com', 'es.nodes.wan.only'='true', 'es.port'='9200', 'es.read.metadata'='true', 'es.resource'='ddj_study_card_ratio_v12', 'es.set.netty.runtime.available.processors'='false', 'es.write.operation'='index', 'last_modified_by'='root', 'last_modified_time'='1655264909', 'transient_lastDdlTime'='1655264909');
关键参数说明:
- es.net.http.auth.pass、es.net.http.auth.user:在Kibana中创建的具有1创建的索引的操作权限的用户密码及用户名,详细内容请参见使用Kibana创建用户并授权。
- es.nodes:需要连接的IP,可登录CSS管理控制台,在集群列表的“内网访问地址”列即可查看对应集群的IP地址。
- es.port:外部访问Elasticsearch集群端口,默认为9200。
- es.resource:1创建的索引名称。
更多参数配置可参考开源社区文档https://www.elastic.co/guide/en/elasticsearch/hadoop/6.1/hive.html。
- 执行以下命令查看12创建的Elasticsearch外部表:
select * from ddj_study_card_ratio_v12_test;
当返回结果信息中无报错信息,并且查询成功时,表示Hive成功对接CSS服务。查询结果如下所示: