45.hive -e 提示 X.sh: line XXX: percent: command not found和not recognize input near ‘percent‘ ‘*‘

 报错提示的截图

 

 场景复现:

有对一个Hive表做数据清洗,其中某个表字段是percent;

percent是hive的一个函数,所以写sql时需要使用反引号“`”对字段进行引用

比如:

select
id,
name,
`percent`
from XXXX
where
name = 'XXX'

在写Hive脚本时,想当然的仍然对percent字段做反引号的引用;但在实际操作中有报错

hive  -e \
"select  \
id, \
name, \
`percent`
from XXXXX  \
where XXXXX" \
| sed -e 's/[\t]/,/g' \
| grep -v "WARN" \
| grep -v "main ERROR" \
> XXXXXX_data.csv;

因为shell脚本里,反引号“`”是有特殊的含义:shell中的反引号(` `)的作用 将反引号(` `)内的字符串当作shell命令来执行,返回值是命令的执行的结果,起到的是一个命令的替换作用。所以,在此处,percent并不是shell的命令,

才会有本文刚开始提示的报错 XXXX.sh: line XXX: percent: command not found

解决办法:应在“`”(反引号)前添加转移字符“\”,对于我这个报错场景,`percent`转变为\'percent\`

select  
id, 
name, 

\`percent\`
from XXXXX 

伪代码如下:

hive  -e \
"select  \
id, \
name, \
\`percent\`
from XXXXX  \
where XXXXX" \
| sed -e 's/[\t]/,/g' \
| grep -v "WARN" \
| grep -v "main ERROR" \
> XXXXXX_data.csv;

此贴来自汇总贴的子问题,只是为了方便查询。

总贴请看置顶帖:

pyspark及Spark报错问题汇总及某些函数用法。

pyspark及Spark报错问题汇总及某些函数用法。_元元的李树的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值