HIVE中map,array和structs使用

2021-06-20 20:24:20 字數 2573 閱讀 6943

hive中map,array和structs使用 

1:怎樣匯入文字檔案(格式是怎樣的?),2:怎樣查詢資料,已經能否在join中使用?在子查詢中使用?等等

知道怎麼在hive中匯入陣列不?

例如:我想把 陣列[1,2,3] 和 陣列 ["a","b","c"]

匯入到table1中

create table table2 ( a array, b array);

那麼 我如何 匯入呢?使得

select * from table1;

j結果為:

[1,2,3] ["a","b","c"]

同樣 在 hive 中 對於 map

怎樣 查詢呢?

例如 create table table2 ( a map>);

select * from table2 結果為:

那麼 我想獲得 key 為 d01的value值 

該怎麼操作呢

關於陣列的操作說明:

drop table table2;

create table table2 (a array, b array)

row format delimited

fields terminated by '\t'

collection items terminated by ',';

load data local inpath "../hive/examples/files/arraytest.txt"  overwrite into table table2;

arraytest.txt中的資料形式為:(不同陣列間用\t分割,同一陣列內不同元素用逗號分割)

b00,b01        b00,b01

b00,b01        b00,b01

b00,b01        b00,b01

b00,b01        b00,b01

hive> select * from table2;

ok["b00","b01"]   ["b00","b01"]

["b00","b01"]   ["b00","b01"]

["b00","b01"]   ["b00","b01"]

["b00","b01"]   ["b00","b01"]

time taken: 0.056 seconds

hive> select a from table2;

ok["b00","b01"]

["b00","b01"]

["b00","b01"]

["b00","b01"]

time taken: 15.903 seconds

hive> select a[0] from table2;

okb00

b00b00

b00time taken: 12.913 seconds

hive> select * from table2 where a[0] = b[0];

ok["b00","b01"]   ["b00","b01"]

["b00","b01"]   ["b00","b01"]

["b00","b01"]   ["b00","b01"]

["b00","b01"]   ["b00","b01"]

time taken: 11.803 seconds

關於map的操作說明:

drop table table2;

hive> create table table2 (foo string , bar map)

> row format delimited

> fields terminated by '\t'

> collection items terminated by ','

> map keys terminated by ':'

> stored as textfile;

hive> load data local inpath "../hive/examples/files/maptest.txt"  overwrite into table table2;

maptest.txt中的檔案格式為:(不同列之間用乙個tab分割,map中key和value用冒號分割,不同k/v間用逗號分割)

a00        b0:b01,b1:b11

a01        b1:b11,b2:b12

a02        b2:b12,b3:b13

a03        b3:b13,b4:b14

hive> select bar from table2;

oktime taken: 19.237 seconds

怎麼根據 key來查詢value呢?

hive> select 

bar['b1']

from table2;

okb11

b11null

null

time taken: 11.65 seconds

檢視map中的鍵值對個數:

hive> select size(bar) from table2;ok2

222time taken: 12.137 seconds

HIVE中map,array和structs使用

1 怎樣匯入文字檔案 格式是怎樣的?2 怎樣查詢資料,已經能否在join中使用?在子查詢中使用?等等 知道怎麼在hive中匯入陣列不?例如 我想把 陣列 1,2,3 和 陣列 a b c 匯入到table1中 create table table2 a array,b array 那麼 我如何 匯入...

Hive中建立S3的外部表

hive中建立s3的外部表 資料在s3存放的資料是按時間緯度存放的,每天的資料存放在各自的目錄下,目錄結構如下截圖 每個目錄下面的資料是csv檔案,現在將其匯入到hive中進行查詢,通過建立對應的表結構 sql view plain copy hadoop到s3 hadoop distcp hdfs...

hive操作s3資料

1 hive配置s3訪問許可權 2 建立表 例如create external table table create time bigint comment 獲取時的時間 event name string comment 事件名 timestamp bigint comment 事件發生時間 is...