hiveFailedCollection: ParseException line 1:0 character '<feff>' not supported here

本文介绍了一个关于Hive CLI端执行SQL脚本时出现的解析错误问题,该问题源于脚本文件的UTF-8编码包含BOM,而非Hive所支持的UTF-8无BOM格式。

Referto:

https://issues.apache.org/jira/browse/HIVE-7568点击打开链接

执行环境:hive cli端

执行:hive -f hive.sql

报错:FAILED: ParseException line 1:0character '<>' not supported here。

Reason:

Hive.sql这个文件的编码格式为UTF-8格式编码,而被hive认可编译的是 UTF-8 无BOM格式编码


### Hive SQL 中 `ParseException: cannot recognize input near 'fremark' '<EOF>' '<EOF>'` 的解决方法 在 Hive SQL 编写过程中,若出现 `ParseException: cannot recognize input near 'fremark' '<EOF>' '<EOF>'` 错误,通常表示 SQL 语句在解析时遇到语法问题,特别是在字段名或表达式附近存在结构不完整或语义模糊的情况。该错误可能由以下几种原因导致: 1. **子查询未使用别名** Hive 要求所有子查询必须使用别名,否则会抛出 `cannot recognize input near '<EOF>'` 的错误。例如,在以下语句中,子查询 `(SELECT * FROM table)` 没有别名会导致解析失败: ```sql -- 错误示例 SELECT * FROM (SELECT * FROM table); ``` 正确的写法是为子查询添加别名: ```sql -- 正确示例 SELECT * FROM (SELECT * FROM table) t1; ``` 该规则适用于所有嵌套子查询,包括多层嵌套结构,若未添加别名,Hive 无法识别后续的字段引用(如 `fremark`)[^2]。 2. **字段名拼写错误或使用非法标识符** 若 `fremark` 是字段名,则需要确认该字段在上下文中是否存在且拼写正确。如果字段名与 Hive 保留关键字冲突(如 `order`, `group`, `union` 等),则需要用反引号(\`)包裹字段名以避免语法错误: ```sql SELECT `fremark` FROM table; ``` 3. **SQL 语句结构不完整** 在使用复杂表达式或函数时,若语法结构不完整,也可能导致 Hive 无法识别后续内容。例如在 `CASE WHEN` 或 `LATERAL VIEW` 使用过程中,若缺少 `END` 或 `AS` 等关键字,解析器可能在字段附近报错: ```sql -- 错误示例 SELECT CASE WHEN id = 1 THEN 'A' ELSE 'B' AS category FROM table; -- 正确示例 SELECT CASE WHEN id = 1 THEN 'A' ELSE 'B' END AS category FROM table; ``` 4. **字符串拼接或类型转换错误** 若 `fremark` 字段与整数或其他非字符串类型直接拼接,而未使用 `CAST` 或 `CONCAT` 函数,也可能导致解析异常: ```sql -- 错误示例 SELECT 'Remark: ' + fremark FROM table; -- 正确示例 SELECT CONCAT('Remark: ', fremark) FROM table; ``` 5. **Hive 版本兼容性问题** 不同版本的 Hive 对 SQL 语法的支持略有差异,例如在 Hive 2.x 中,某些表达式可能需要更严格的语法结构。若使用较旧版本的 Hive,建议升级或查阅对应版本的官方文档以确保语法兼容性。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值