hive創建ES外部表過程中的問題


一、缺少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',

具體解釋:

配置“es.nodes.wan.only”在https://www.elastic.co/guide/en/elasticsearch/hadoop/master/configuration.html可以找到其詳細的信息:    

 

 

    其意思也就是通過公網我訪問雲上或者一些限制性網絡上的ES實例時,如AWS,通過聲明該配置就會禁用發現其它節點的行為,后續的讀和寫都只會通過這個指定的節點進行操作,增加了該屬性就可以訪問雲上或者受限制網絡中的ES,但是也因為讀寫都是通過這個節點,因而性能上會受到比較大的影響。

參考:https://blog.csdn.net/fenglibing/article/details/80478551

 

四、從本地加載keystore

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM