Hive基礎(四):Hive 數據類型(一)
1 基本數據類型

對于 Hive 的 String 類型相當于數據庫的 varchar 類型,該類型是一個可變的字符串,不過它不能聲明其中最多能存儲多少個字符,理論上它可以存儲 2GB 的字符數。
2 集合數據類型

Hive 有三種復雜數據類型 ARRAY、MAP 和 STRUCT。ARRAY 和 MAP 與 Java 中的Array 和 Map 類似,而 STRUCT 與 C 語言中的 Struct 類似,它封裝了一個命名字段集合,復雜數據類型允許任意層次的嵌套。
案例實操
1) 假設某表有如下一行,我們用 JSON 格式來表示其數據結構。在 Hive 下訪問的格式為
{ "name": "songsong", "friends": ["bingbing" , "lili"] , //列表 Array, "children": { //鍵值 Map, "xiao song": 18 , "xiaoxiao song": 19 } "address": { //結構 Struct, "street": "hui long guan" , "city": "beijing" } }
2)基于上述數據結構,我們在 Hive 里創建對應的表,并導入數據。創建本地測試文件 test.txt
songsong,bingbing_lili,xiao song:18_xiaoxiao song:19,hui long guan_beijing yangyang,caicai_susu,xiao yang:18_xiaoxiao yang:19,chao yang_beijing
注意:MAP,STRUCT 和 ARRAY 里的元素間關系都可以用同一個字符表示,這里用“_”。
3)Hive 上創建測試表 test
create table test( name string, friends array<string>, children map<string, int>, address struct<street:string, city:string> ) row format delimited fields terminated by ',' collection items terminated by '_' map keys terminated by ':' lines terminated by '\n';
字段解釋:
row format delimited fields terminated by ',' -- 列分隔符
collection items terminated by '_' --MAP STRUCT 和 ARRAY 的分隔符(數據分割
符號)
map keys terminated by ':' -- MAP 中的 key 與 value 的分隔符
lines terminated by '\n'; -- 行分隔符
4)導入文本數據到測試表
hive (default)> load data local inpath ‘/opt/module/datas/test.txt’into table test
5)訪問三種集合列里的數據,以下分別是 ARRAY,MAP,STRUCT 的訪問方式
hive (default)> select friends[1],children['xiao song'],address.city from test where name="songsong";

3 類型轉化
Hive 的原子數據類型是可以進行隱式轉換的,類似于 Java 的類型轉換,例如某表達式使用 INT 類型,TINYINT 會自動轉換為 INT 類型,但是 Hive 不會進行反向轉化,例如,
某表達式使用 TINYINT 類型,INT 不會自動轉換為 TINYINT 類型,它會返回錯誤,除非使用 CAST 操作。
1.隱式類型轉換規則如下
(1)任何整數類型都可以隱式地轉換為一個范圍更廣的類型,如 TINYINT 可以轉換成 INT,INT 可以轉換成 BIGINT。
(2)所有整數類型、FLOAT 和 STRING 類型都可以隱式地轉換成 DOUBLE。
(3)TINYINT、SMALLINT、INT 都可以轉換為 FLOAT。
(4)BOOLEAN 類型不可以轉換為任何其它的類型。
2.可以使用 CAST 操作顯示進行數據類型轉換
例如 CAST('1' AS INT)將把字符串'1' 轉換成整數 1;如果強制類型轉換失敗,如執行CAST('X' AS INT),表達式返回空值 NULL。
0: jdbc:hive2://hadoop102:10000> select '1'+2, cast('1'as int) + 2; +------+------+--+ | _c0 | _c1 | +------+------+--+ | 3.0 | 3 | +------+------+--+
本文來自博客園,作者:秋華,轉載請注明原文鏈接:http://www.rzrgm.cn/qiu-hua/p/13358331.html

浙公網安備 33010602011771號