报错FAILED: ParseException line 1:7 cannot recognize input near 'exchange' ',' 'symbol' in select clause
时间: 2023-12-26 15:04:56 浏览: 91
这个错误是因为HiveQL中的exchange是一个保留字(关键字),需要用反引号(`)进行转义。修改后的HiveQL语句如下:
```
SELECT `exchange`, symbol, ymd, price_close, price_open, price_close - price_open AS price_diff
FROM stocks
ORDER BY price_diff DESC
LIMIT 1;
```
注意到exchange前后使用了反引号进行了转义。其他部分与之前的语句相同。
相关问题
还是报错 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()`,这样可以避免统计出错的情况。
修改完成后,重新运行脚本即可。
hive 报错FAILED: ParseException line 2:23 cannot recognize input near '.' 'dwd_start_log' 'partition' in table name
这个错误一般是因为在 Hive 的 SQL 语句中表名写法有误,导致 Hive 无法识别表名。
你可以检查一下你的 SQL 语句,看看是否在表名中使用了不正确的字符或者格式。比如,如果你的表名中包含了点号(.),需要使用反引号将其括起来,例如:
```
SELECT * FROM `mydb.dwd_start_log` WHERE partition='20220101';
```
如果你的表名中不包含点号,那么就不需要使用反引号。
另外,你还需要确保你要查询的表在 Hive 中已经存在,并且你对该表有足够的权限进行查询操作。