【问题标题】:How to deal with column names containing special characters like (,),$,% and spaces while querying in Hive View在 Hive 视图中查询时如何处理包含 (,)、$、% 和空格等特殊字符的列名
【发布时间】:2016-05-04 15:53:52
【问题描述】:

希望大家都知道,从 Hive 0.13 及更高版本开始,列名可以包含任何 Unicode 字符(请参阅 HIVE-6013)。在反引号 (`) 中指定的任何列名都按字面意思处理,但它似乎适用于表。就我而言,我有一个使用多个列创建的视图,其中包含特殊字符,如 (,)、$、% 和列名中的空格。我在创建视图时使用了 backtics 并创建了它,但是在使用“select * from view_name”检索时,我在没有启动任何 map reduce 作业的情况下遇到错误:

FAILED:执行错误,返回代码 1 从 org.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

是否与权限问题有关?

【问题讨论】:

  • 这不是很丰富的信息——Hive“返回代码 1”只是意味着 “老兄,YARN 作业意外失败,去获取 YARN 日志以了解原因”。跨度>
  • 啊,实际上它看起来像一个本地任务,所以日志可能在你本地的某个地方/tmp/hive/...
  • 很抱歉打扰你们,这是由于权限问题,现已解决..

标签: view hive hiveql


【解决方案1】:
select  REGEXP_REPLACE(c1, "%|)|,|-|\\$",'')) c1,
from tablename; 

使用上面的REGEXP_REPLACE 会将“”中的所有字符替换为列中的'':c1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-02
    • 2019-07-07
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 2020-01-15
    相关资源
    最近更新 更多