Hive應用:選取分隔符

Hive應用:選取分隔符

在使用hive的時候,分隔符是必不可少的,當學習的時候使用的都是常規分隔符,好比:逗號「,」、豎線「|」等,這些鍵盤上均可以直接輸入的字符,可是這些字符只要是鍵盤上的,在針對複雜的業務邏輯的時候,都會失效。sql

好比你有一個備註字段,這個字段容許用戶輸入輸入鍵盤上的任何字符,一旦用戶輸入了你選擇的分隔符,那麼Hive在使用這個數據的時候,就會致使hive表中的字段錯位。vim

使用多個組合字符,也能夠成爲一種選擇,可是有些導入導出工具,不支持多字符分隔符,好比:阿里的DATAX就不支持多字符分隔符。bash

那麼如今咱們就須要一種字符,是用戶輸入不了的,計算機又存在的字符,下面這些字符則能夠知足需求!服務器

一、特殊字符

如下這些字符是能夠在Hive中應用,而且DATAX也支持的:工具

char digraph hex dec official name Unicode
^@ NU 0x00 0 NULL (NUL)N \u0000
^A SH 0x01 1 START OF HEADING (SOH) \u0001
^B SX 0x02 2 START OF TEXT (STX) \u0002
^C EX 0x03 3 END OF TEXT (ETX) \u0003
^D ET 0x04 4 END OF TRANSMISSION (EOT) \u0004
^E EQ 0x05 5 ENQUIRY (ENQ) \u0005
^F AK 0x06 6 ACKNOWLEDGE (ACK) \u0006
^G BL 0x07 7 BELL (BEL) \u0007
^H BS 0x08 8 BACKSPACE (BS) \u0008
^I HT 0x09 9 CHARACTER TABULATION (HT) \u0009
^@ LF 0x0a 10 LINE FEED (LF) \u0010
^K VT 0x0b 11 LINE TABULATION (VT) \u0011
^L FF 0x0c 12 FORM FEED (FF) \u0012
^M CR 0x0d 13 CARRIAGE RETURN (CR) \u0013

注意:特殊符號中的^ 和鍵盤上的^ 字符是不同的。另外特殊符號中的^和後面跟的字符是一體的,也就是說,兩個字符是一個符號。oop

二、經過digraph輸入

Vim中顯然沒有什麼特殊字符選擇工具,但提供了兩種輸入特殊字符的方式:學習

  • 一、經過兩個字符來輸入一個特殊字符(digraph)。
  • 二、直接經過編碼值(ASCII或Unicode)輸入。

其中digraph是一種相似雙拼的方法,連續輸入兩個字符來表示一個特殊字符。須要先按下前導鍵<Ctrl-K>,例如在編輯模式下輸入:測試

<Ctrl-K>Rg

如上的輸入,將會出現®字符,其中"Rg"是該字符的digraph(雙拼)。編碼

特殊字符表中的digraph列就是這些字符的雙拼輸入字符,輸入時注意大小寫,雙拼輸入是區分大小寫的。.net

在Windows中是沒法輸入特殊字符的,可使用Unicode碼進行輸入。

例如:要使用^A做爲分割字符能夠這樣寫:

create external table city(city_id string,city_name string ) row format delimited fields terminated by '\u0001' location 'hdfs://hadoop01:8090/test/city';

三、測試數據

建表語句:

create external table city(city_id string,city_name string,pinyin string,pingying2 string,code string,db_name string,city_status string,default_areas string,yum_city_name string) row format delimited fields terminated by '\u0000' location 'hdfs://hadoop01:8090/test/city';

如上的代碼本人使用的^@字符做爲分隔符的。

如下是Eclipse鏈接Hadoop查看的數據格式樣例:

將此文件直接傳到Linux服務器中,使用vim打開,能夠發現,字段之間的分隔符以下:

Hive查詢出來的數據樣例:

這裏須要說一下,在特殊字符表中有兩個^@ 符號,通過本人測試,這兩個符號在做爲分隔符的時候是同樣的,能夠認爲是同樣的。只是輸入的時候不同。

四、查看隱藏字符的方法

在Linux系統中,文本文件中是存在隱藏字符的,須要使用如下命令才能查看到:

cat

命令以下:

cat -A fileName

vim

使用vim進入編輯文件的命令模式,使用如下命令:

set list #顯示隱藏字符
set nolist #取消顯示隱藏字符

上一篇:Hive應用:設置字段默認值

下一篇:Hive語法:union

相關文章
相關標籤/搜索