1. 程式人生 > >Hive查詢特殊欄位解決方案

Hive查詢特殊欄位解決方案

問題:

1.欄位、表名是中文,表名,資料庫是中文名,怎麼解決?

2.欄位、表名特殊的字元包括 \,  (),  $ ...,怎麼解決?

3.類似於func(xxx), 這是一個欄位名字,不是一個函式巢狀欄位,但是在hive查詢引擎的解析處理中,被解析為一個udf函式和一個欄位名字,怎麼解決?

 

解決方法:

1.基礎解決方案,使用反引號例如: " `` " 

create table hehe(`來試試` string);

create table `我是一個正經的表名`(`我是一個正經的欄位` int);

 

2.如果出現上面問題3的情況,經過研究Hive執行原理,當一個欄位有一個別名,類似於

select tb_id  as id  from table_name limit 10;

其中的tb_id的別名id,那麼可以判斷出來前面是一個欄位,然後再去元資料庫中匹配這個欄位是否在元資料庫中。

因此問題三我們可以使用 select `func(xxx)` as b from ods.table_name limit 10 來查詢資料。