蜂巢错误:在蜂巢查询中指定字符串

Posted

技术标签:

【中文标题】蜂巢错误:在蜂巢查询中指定字符串【英文标题】:hive error: specifying a string in a hive query 【发布时间】:2018-09-27 11:11:21 【问题描述】:

当我运行以下 hive 命令时

hive -e 'select msg, count(*) as cnt from table where msg like “%abcd%” 按 msg 顺序按 cnt desc 分组;' | sed 's/[\t]/,/g' > 表格.csv

我收到以下错误。

失败:ParseException line 1:89 无法识别“like”附近的输入 '%' 'password' 在表达式规范中

我知道指定字符串“%abcd%”时存在问题。该命令在 hive 环境中运行良好,但在这里我试图将结果保存到 csv 文件。我该如何纠正这个错误?

【问题讨论】:

问题是 Hive 使用单引号作为字符串,所以你需要写 like '%abcd%' 并使用双引号作为 bash 字符串 @serge_k 也试过了hive -e 'select msg, count(*) as cnt from table where msg like '%password%' group by msg order by cnt desc ;' | sed 's/[\t]/,/g' > table.csv。但得到同样的错误。 然而,这很好hive -e "select msg, count(*) as cnt from table where msg like '%password%' group by msg order by cnt desc ;" | sed "s/[\t]/,/g" > table.csv 其实这就是我写“使用双引号作为 bash 字符串”时的意思。 【参考方案1】:

Hive 脚本应该是双引号,模板是单引号:

hive -e "select msg, count(*) as cnt from table where msg like '%abcd%' group by msg order by cnt desc ;" | sed 's/[\t]/,/g' > table.csv

【讨论】:

以上是关于蜂巢错误:在蜂巢查询中指定字符串的主要内容,如果未能解决你的问题,请参考以下文章

蜂巢订单不工作

请帮助将字符串转换为蜂巢中的时间戳

检查蜂巢中特定位置的特定值

蜂巢分析查询需要很多时间

蜂巢中的时间戳?

蜂巢扫描并在一个查询中选择