es在hive建外表报错:Cannot detect ES version

在尝试使用Hive建立Elasticsearch外表时遇到版本不匹配错误,错误信息显示无法识别Elasticsearch版本6.8.2。经过调查,发现由于elasticsearch-hadoop.jar版本为5.4.3,与Elasticsearch集群6.8.2不兼容。升级jar包到6.8.18后,建表成功但插入数据仍报错。进一步排查发现Hive的auxiliary JAR路径中存在旧版本jar包,删除5.4.3版本并重启Hiveserver服务后,通过Hive客户端和Beeline执行建表及插入数据操作才最终成功。

在hive建es外表时遇到了一个错误:

 在建表语句中增加参数'es.nodes.wan.only' = 'true'之后还是报同样的错误。

可是按理说之前在相同集群建es外表时候没有出现这样的错误。

进入hive 的debug模式

hive -hiveconf hive.root.logger=DEBUG,console

 可以看到日志输出:Unsupported/Unknown Elasticsearch version 6.8.2

想到可能是因为elasticsearch-hadoop.jar的包版本冲突,查看一下:

 果然是,现在服务器上的版本是5.4.3。

下载elasticsearch-hadoop-6.8.18.jar,add jar之后,果然建表成功。

可是插入数据仍然报错,第二天重新建表仍然报相同错误,add jar elasticsearch-hadoop-6.8.18.jar 也不行。

然后怀疑是不是新旧版本jar包冲突,重启hive debug模式,高亮关键字 elasticsearch,果然发现hive.aux.jar

在 Hue 创 Hive 表时出现 `SemanticException unrecognized file format in STORED AS clause: csv` 错误,是因为 Hive 默认不直接支持 `CSV` 作为存储格式。可以通过以下几种方法解决: #### 使用 ROW FORMAT DELIMITED 不使用 `STORED AS CSV`,而是使用 `ROW FORMAT DELIMITED` 来指定字段分隔符,以此处理 CSV 数据。示例代码如下: ```sql CREATE TABLE csv_table ( col1 INT, col2 STRING, col3 DOUBLE ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE; ``` 在上述代码中,`FIELDS TERMINATED BY ','` 指定了字段之间的分隔符为逗号,`STORED AS TEXTFILE` 表示数据以文本文件形式存储,这是处理 CSV 数据的常见做法。 #### 使用 SerDe 使用 OpenCSVSerde 来处理 CSV 数据。示例代码如下: ```sql CREATE TABLE csv_table ( col1 INT, col2 STRING, col3 DOUBLE ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES ( "separatorChar" = ",", "quoteChar" = "\"", "escapeChar" = "\\" ) STORED AS TEXTFILE; ``` 在这个示例中,`ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'` 指定了使用 OpenCSVSerde 来处理 CSV 数据,`SERDEPROPERTIES` 则进一步配置了分隔符、引号字符和转义字符。 #### 安装 CSV SerDe 库 如果 Hive 没有内置支持 CSV 的 SerDe,可以手动安装相应的库。例如,可以使用 Hive 的 `ADD JAR` 命令添加包含 CSV SerDe 实现的 JAR 文件,然后在创表时使用该 SerDe。示例代码如下: ```sql ADD JAR /path/to/csv-serde.jar; CREATE TABLE csv_table ( col1 INT, col2 STRING, col3 DOUBLE ) ROW FORMAT SERDE 'com.example.CSVSerde' STORED AS TEXTFILE; ``` 这里需要将 `/path/to/csv-serde.jar` 替换为实际的 JAR 文件路径,`com.example.CSVSerde` 替换为实际的 CSV SerDe 类名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值