我在创建外部表以将数据从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
任何帮助!
答案 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');
工作了!