hive中幾種分割符

分隔符

\n    每行一條記錄
^A    分隔列(八進制 \001)
^B    分隔ARRAY或者STRUCT中的元素,或者MAP中多個鍵值對之間分隔(八進制 \002)
^C    分隔MAP中鍵值對的“鍵”和“值”(八進制 \003)

 

用到了系統默認分隔符。通常下面2中情況我們需要需要用到分隔符

1,製作table的輸入文件,有時候我們需要輸入一些特殊的分隔符

2,把hive表格導出到本地時,系統默認的分隔符是^A,這個是特殊字符,直接cat或者vim是看不到的

分隔符在HIVE中的用途

分隔符

描述

\n

對於文本文件來說,每行都是一條記錄,因此換行符可以分隔記錄

^A(Ctrl+A)

用於分隔字段(列)。在CREATE TABLE語句中可以使用八進制編碼\001表示

^B(Ctrl+B)

用於分隔ARRAY或者STRUCT中的元素,或用於MAP中鍵-值對之間的分隔。在CREATE TABLE語句中可以使用八進制編碼\002表示

^C(Ctrl+C)

用於MAP中鍵和值之間的分隔。在CREATE TABLE語句中可以使用八進制編碼\003表示

 

Hive 中沒有定義專門的數據格式,數據格式可以由用戶指定,用戶定義數據格式需要指定三個屬性:列分隔符(通常爲空格、”\t”、”\x001″)、行分隔符(”\n”)以及讀取文件數據的方法。由於在加載數據的過程中,不需要從用戶數據格式到 Hive 定義的數據格式的轉換,因此,Hive 在加載的過程中不會對數據本身進行任何修改,而只是將數據內容複製或者移動到相應的 HDFS 目錄中。

我們可以在create表格的時候,選擇如下,表格加載input的文件的時候就會按照下面格式匹配

row format delimited 
fields terminated by '\001' 
collection items terminated by '\002' 
map keys terminated by '\003'
lines terminated by '\n' 
stored as textfile; 

 如何查看和修改分割符,特殊符號

1查看隱藏字符的方法

1.1,cat -A filename

1.2,vim filename後 命令模式下輸入

  set list顯示特殊符號

  set nolist 取消顯示特殊符號

 

2修改隱藏字符的方法

首先按照1.2打開顯示特殊符號。進入INSERT模式

ctrl + V 可以輸入 ^符號
ctrl + a 可以輸入A---'\001'
ctrl + b 可以輸入A---'\002'
ctrl + c 可以輸入A---'\003'

 

 注意:雖然鍵盤上你能找到^和A但直接輸入時不行的,必須按照上面的方法輸入。

第一行是特殊符號顏色藍色,第二行直接輸入不是特殊符號。

特殊號直接cat是不可以看見的,但是第二行是可見的,所以不是特殊符號。


ROW FORMAT DELIMITED 
  FIELDS TERMINATED BY '\u0001' 
  COLLECTION ITEMS TERMINATED BY '\u0002' 
  MAP KEYS TERMINATED BY '\u0003'
\u0001是ASCII編碼值,對應java代碼中的"\001"

意義如下:

(1)FIELDS,字段之間的分隔符是'\u0001'

(2)COLLECTION ITEMS,多個集合之間的分隔符是'\u0002',例如(kv1,kv2,kv3)這種多個鍵值對之間的分隔符就是'\u0002'

(3)MAP KEYS,單個map的k和v之間的分隔符是\\u0003\,例如kv1裏,k \u0003 v
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章