hive 报错FAILED: ParseException line 2:23 cannot recognize input near '.' 'dwd_start_log' 'partition' in table name
时间: 2023-12-28 07:04:49 浏览: 63
这个错误一般是因为在 Hive 的 SQL 语句中表名写法有误,导致 Hive 无法识别表名。
你可以检查一下你的 SQL 语句,看看是否在表名中使用了不正确的字符或者格式。比如,如果你的表名中包含了点号(.),需要使用反引号将其括起来,例如:
```
SELECT * FROM `mydb.dwd_start_log` WHERE partition='20220101';
```
如果你的表名中不包含点号,那么就不需要使用反引号。
另外,你还需要确保你要查询的表在 Hive 中已经存在,并且你对该表有足够的权限进行查询操作。
相关问题
还是报错 FAILED: ParseException line 1:29 cannot recognize input near 'yinzhou' '.' '+' in table name
很抱歉,我的回答有误。这个错误实际上是因为在 Hive 语句中没有使用反引号(`)来包含表名,导致 Hive 无法识别表名中的字符。
因此,需要将第 10 行代码修改为以下形式:
```
data_size=$(beeline -u jdbc:hive2://localhost:10000 -n username -p password -e "select count(*) from yinzhou.\`$table\`;"| awk '{if(NR>2)print}')
```
这样就可以在表名前后加上反引号,避免出现语法错误。同时,建议使用 `count(*)` 代替 `count()`,这样可以避免统计出错的情况。
修改完成后,重新运行脚本即可。
上面这个脚本报错:FAILED: ParseException line 1:29 cannot recognize input near 'yinzhou' '.' '+' in table name
这个报错的原因是在查询表数据量的时候,拼接表名时出现了语法错误。具体来说,错误信息中提到了一个不能识别的字符 "+",这是因为在拼接字符串时使用了加号,而 Hive 中是使用竖线 "|" 来连接字符串的。
为了解决这个问题,需要修改脚本中的第 10 行代码,将拼接字符串的加号改为竖线,即将:
```
data_size=$(beeline -u jdbc:hive2://localhost:10000 -n username -p password -e "select count() from yinzhou.$table;")
```
修改为:
```
data_size=$(beeline -u jdbc:hive2://localhost:10000 -n username -p password -e "select count(*) from yinzhou.$table"| awk '{if(NR>2)print}')
```
同时,建议在查询数据量时使用 `count(*)`,这样可以避免统计出错的情况。
修改完成后,重新运行脚本即可。