首页 > 解决方案 > 无法使用 spark SQL 将数据插入配置单元弹性搜索索引

问题描述

我在 hive 终端中使用了以下步骤插入到弹性搜索索引中-

  1. 创建hive指向elasticsearch索引的表

    创建外部表 test_es(id string, name string) 由 'org.elasticsearch.hadoop.hive.EsStorageHandler' TBLPROPERTIES('es.resource = test/person', 'es.mapping = id') 存储;

  2. 创建临时表并将数据插入其中

    创建表emp(id string,name string) 以','结尾的行格式分隔字段;

    将数据本地输入路径'/home/monami/data.txt'加载到表emp中;

  3. 将临时表中的数据插入到 hive elasticsearch 索引中

    插入覆盖表 test_es select * from emp;

我可以按照上述步骤成功浏览 hive elasticsearch 索引hive CLI。但是,每当我尝试使用 SPARK SQLhiveContext对象以相同的方式插入时,我都会收到以下错误 -

java.lang.RuntimeException: java.lang.RuntimeException: class org.elasticsearch.hadoop.mr.EsOutputFormat$EsOutputCommitter not org.apache.hadoop.mapred.OutputCommitter

你能告诉我这个错误的原因吗?如果无法使用 Spark 以相同的方式插入,那么使用 Spark 插入 hive elasticsearch 索引的方法是什么?

使用的版本 - Spark 1.6、Scala 2.10、Elasticsearch 6.4、Hive 1.1

标签: scalahadoopelasticsearchhiveapache-spark-sql

解决方案


推荐阅读