使用EsStorageHandler在Hive中创建外部表时出错

时间:2015-06-03 09:56:30

标签: hadoop elasticsearch hive

我在创建外部表以将数据从Hive推送到ElasticSearch时遇到错误。

到目前为止我做了什么:

1)成功设置 ElasticSearch-1.4.4 并正在运行。

2)成功设置 Hadoop1.2.1 ,所有守护进程都已启动并运行。

3)成功设置 Hive-0.10.0

4)在 Hadoop / lib Hive / lib 中配置 elasticsearch-hadoop-1.2.0.jar

5)在Hive中成功创建了几个内部表。

执行以下命令时出错:

CREATE EXTERNAL TABLE drivers_external (
    id BIGINT, 
    firstname STRING, 
    lastname STRING, 
    vehicle STRING, 
    speed STRING) 
STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'                    
TBLPROPERTIES('es.nodes'='localhost','es.resource' = 'drivers/driver');

错误是:

Failed with exception org.apache.hadoop.hive.ql.metadata.HiveException: Error in loading storage handler.org.elasticsearch.hadoop.hive.EsStorageHandler FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

任何帮助!

1 个答案:

答案 0 :(得分:1)

终于找到了解决方案......

1)" elasticsearch-hadoop-1.2.0.jar "我正在使用的jar被窃听了一个。它里面没有任何 hadoop / hive 包。 (在互联网上找到这个罐子,然后就下载了它。)

现在用来自 Maven存储库" elasticsearch-hadoop-1.3.0.M1.jar" 的jar替换它。

2)类"org.elasticsearch.hadoop.hive.**EsStorageHandler**"已在新的elasticsearch jar中重命名为"org.elasticsearch.hadoop.hive.**ESStorageHandler**"。请注意,' ES'中的资本'

所以创建External table的新hive命令是:

CREATE EXTERNAL TABLE drivers_external (
       id BIGINT, 
       firstname STRING, 
       lastname STRING, 
       vehicle STRING, 
       speed STRING) 
STORED BY 'org.elasticsearch.hadoop.hive.ESStorageHandler'
TBLPROPERTIES('es.nodes'='localhost','es.resource' = 'drivers/driver');

工作了!