希望大家都知道,在配置单元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