在配置单元视图中查询时,如何处理包含特殊字符(、)、$、%和空格的列名



希望大家都知道,在配置单元0.13及更高版本中,列名可以包含任何Unicode字符(请参阅Hive-6013)。在backticks(`)中指定的任何列名都将按字面处理,但它似乎适用于表。在我的例子中,我有一个使用多个列创建的视图,这些列的列名中包含特殊字符,如(,)、$、%和空格。我在创建视图时使用了backtics,它已经创建,但在使用"select*from view_name"检索时,我在没有启动任何地图缩减作业的情况下收到了以下错误:

失败:执行错误,返回代码1org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask

它只生成查询id,但不会创建作业,因此找不到日志。但当我在Hue Hive编辑器中尝试时,我运行了该作业,但无法获取结果。

counters:
File Bytes Read 1882965
File Bytes Written  2120145
Hdfs Bytes Read 43923
Hdfs Bytes Written  9250984
Hdfs Read Ops   3
Hdfs Write Ops  2
Committed Heap Bytes    220725248
Cpu Milliseconds    6420
Gc Time Millis  46
Merged Map Outputs  1
Physical Memory Bytes   286355456
Reduce Input Groups 19332
Reduce Input Records    19332
Reduce Output Records   0
Reduce Shuffle Bytes    1882961
Shuffled Maps   1
Spilled Records 19332
Virtual Memory Bytes    1629929472
Created Files   1
Records Out 0   19332

是否与权限问题有关?

select  REGEXP_REPLACE(c1, "%|)|,|-|\$",'')) c1,
from tablename; 

使用上面的REGEXP_REPLACE将把"中的所有字符替换为列中的":c1

最新更新