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

Error while creating external table in Hive using EsStorageHandler

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

到目前为止我做了什么:

1) 成功设置ElasticSearch-1.4.4并且是运行.

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

3) 成功设置Hive-0.10.0.

4) 在 Hadoop/lib 和 [=35] 中配置了 elasticsearch-hadoop-1.2.0.jar =]Hive/lib也是。

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) 我使用的“elasticsearch-hadoop-1.2.0.jar”jar 被窃听了。它里面没有任何 hadoop/hive 包。 (在互联网上找到这个 jar 并下载了它)。

现在用 Maven 存储库 "elasticsearch-hadoop-1.3.0.M1.jar".

中的 jar 替换它

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

中的大写 'S'

所以创建 External table 的新配置单元命令是:

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');

成功了!