hive es java_hive创建ES外部表过程中的问题

在使用Hive连接到ES的过程中,遇到包括缺少jar包(如commons-httpclient和eshadoop)的错误,以及创建ES外部表后查询失败的问题。解决方法包括添加相应jar包,如commons-httpclient-3.1.jar和elasticsearch-hadoop-7.6.1.jar,并在建表语句中指定'es.nodes.wan.only'='true'以处理keystore位于HDFS上的情况。此设置避免了节点发现,确保通过指定节点进行读写,但可能影响性能。参考资源包括官方文档和博客文章。
摘要由CSDN通过智能技术生成

一、缺少jar包:httpclient

报错:

"HiveServer2-Handler-Pool: Thread-696" java.lang.NoClassDefFoundError: org/apache/commons/httpclient/protocol/ProtocolSocketFactory

需要加载commons-httpclient-3.1.jar

二、缺少jar包:eshadoop

报错:

FAILED: SemanticException Cannot find class 'org.elasticsearch.hadoop.hive.EsStorageHandler'

需要加载与正在使用的ES版本相同的版本号的:elasticsearch-hadoop-7.6.1.jar

三、在hive创建ES外表之后无法正常查询

报错:

Error: java.io.IOException: org.elasticsearch.hadoop.EsHadoopIllegalArgumentException: Expected to find keystore file at [hdfs:///path/to/esh.keystore] but was unable to. Make sure that it is available on the classpath, or if not, that you have specified a valid file URI. (state=,code=0)

这里使用的是将keystore放在hdfs上的方式,

在建表语句中需要指定属性:'es.nodes.wan.only'='true',

具体解释࿱

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值