23 大資料之hive(第四部 hive基礎)
hive 其他操作命令
-
hive中執行hdfs命令
以dfs開頭,同樣是分號結尾,不過這種方式比起直接命令列操作會快一些,因為他不需要啟動jvm虛擬機器和關閉hive> dfs -ls /user; Found 1 items drwxr-xr-x - root supergroup 0 2020-11-22 02:35 /user/hive hive>
-
hive中執行Linux命令
hive> ! ls /root; anaconda-ks.cfg file hive.hql name nameb scp.sh split ssh.sh hive>
hive 其他配置屬行
<property>
<!-- 查詢時顯示列名 -->
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<!-- 在互動命令列顯示庫名資訊 -->
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<property>
<name></name>
<value></value>
</property>
<property>
<name></name>
<value></value>
</property>
<property>
<name></name>
<value></value>
</property>
hive基本資料型別
型別 | 長度 | 解釋 |
---|---|---|
int | 4byte 有符號整數 | 數字型別 |
bigint | 8type 有符號整數 | 數字型別 |
double | 雙精度浮點數 | 小數,如3.14 |
string | 字串 | 字串,使用時需要加引號 |
tinyint | 1byte 有符號整數 | 數字型別 |
boolean | bool型別 | true或者false |
timestamp | 時間型別 |
集合資料型別
資料型別 | 描述 |
---|---|
struct | 可以通過點符號訪問元素內容,例如,如果某個列的資料型別是struct( first struct,last struct),那麼第一個元素可以通過 .first 來引用. |
map | map是一組鍵值對元素集合,使用陣列表示法可以訪問資料,如某個列資料型別是map,其中的鍵值對是 first -> john,last -> doe,那麼可以通過欄位名’last’獲取最後一個元素 |
array | 陣列是一組具有相同名稱和變數的集合,這些變數稱為陣列的元素,每個陣列元素都有一個編號,編號從零開始,如陣列值為[‘liulaoliu’,‘wulaowu’],那麼第二個元素可以用陣列名[1]進行引用 |
集合資料型別演示
準備三條資料資料,寫入檔案中,如/root/test
格式是: 姓名,愛好_愛好,年齡:key_性別:key,城市_國家
liulaoliu,chifan_shuijiao,age:60_gender:nan,beijing_zhongguo
qilaoqi,dayouxi_anmo,age:70_gender:nan,shanghai_zhongguo
wulaowu,yuepao_shuijiao,age:80_gender:nan,xianggang_zhongguo
將其設定為不同的資料型別
hive建表語句
create table test(
name_string string,
hobby_array array<string>,
information_map map<string,string>,
addres_struct struct<city:string,countries:string>
) row format delimited
fields terminated by ','
collection items terminated by '_'
map keys terminated by ':'
lines terminated by '\n';
語句解釋;
create table test( -- 建立表名稱
name_string string, -- 列名 型別 為了後期方便列名才用了 列名_型別
hobby_array array<string>, -- array,陣列型別
information_map map<string,string>, -- map,鍵值對元素集合
addres_struct struct<city:string,countries:string> -- struct型別
) row format delimited -- 行格式化 設定
fields terminated by ',' -- 指定列分隔符為逗號
collection items terminated by '_' -- 指定集合分隔符
map keys terminated by ':' -- 指定map鍵值對分隔符為冒號
lines terminated by '\n'; -- 指定換行符,也就是下一行資料了
hive匯入資料
load data local inpath '/root/test' into table test;
檢視錶中的資料
hive (default)> select * from test;
OK
test.name_string test.hobby_array test.information_map test.addres_struct
liulaoliu ["chifan","shuijiao"] {"age":"60","gender":"nan"} {"city":"beijing","countries":"zhongguo"}
qilaoqi ["dayouxi","anmo"] {"age":"70","gender":"nan"} {"city":"shanghai","countries":"zhongguo"}
wulaowu ["yuepao","shuijiao"] {"age":"80","gender":"nan"} {"city":"xianggang","countries":"zhongguo"}
Time taken: 0.144 seconds, Fetched: 3 row(s)
hive (default)>
陣列其實就是Python的列表,後面就是字典.
如下,依舊是之前的取列,但是取出的是列表,可以根據索引取其中一個,如取出列表中的第一列.
hive (default)> select hobby_array from test;
OK
hobby_array
["chifan","shuijiao"]
["dayouxi","anmo"]
["yuepao","shuijiao"]
Time taken: 0.138 seconds, Fetched: 3 row(s)
hive (default)> select hobby_array from test;
取第一列
hive (default)> select hobby_array[0] from test;
OK
_c0
chifan
dayouxi
yuepao
Time taken: 0.364 seconds, Fetched: 3 row(s)
hive (default)>
獲取map的age索引的值
hive (default)> select information_map["age"] from test;
OK
_c0
60
70
80
Time taken: 0.129 seconds, Fetched: 3 row(s)
hive (default)>
結構體的訪問
hive (default)> select information_map["age"],addres_struct.city from test;
OK
_c0 city
60 beijing
70 shanghai
80 xianggang
Time taken: 0.139 seconds, Fetched: 3 row(s)
hive (default)>
列名.結構體中的某一個的key.
型別轉換
hive的原子資料是可以進行隱式轉換的,類似於Java的型別轉換,比如可以吧int型別轉化為bigint型別,但是不能反向轉換,如bigint 轉化為int,但是可以cast
強行轉化.
隱式轉換規則
- 所有整數型別都可以轉化為更廣泛的型別,如tinyint轉化為int, int轉化為bigint,
- 所有整數型別,float,string都可以隱式的轉化為double.
- tinyint,int等都可以轉化為float.
- boolean不能轉化為任何型別
可以使用cast強制轉換,但是如果轉換失敗則會返回NULL.
如(字串轉為數字):
hive (default)> select cast('1' as int);
OK
_c0
1
Time taken: 0.482 seconds, Fetched: 1 row(s)
但是如果有字母字元,則會失敗
hive (default)> select cast('1a' as int);
OK
_c0
NULL
Time taken: 0.452 seconds, Fetched: 1 row(s)
相關文章
- HIVE資料匯入基礎Hive
- 大資料基礎學習-7.Hive-1.1.0大資料Hive
- 【大資料開發】Hive——Hive函式大全大資料Hive函式
- 【Hive】hive資料遷移Hive
- 大資料技術 - Hive大資料Hive
- 基於Hive的大資料分析系統Hive大資料
- Hive理論基礎Hive
- Hadoop大資料實戰系列文章之HiveHadoop大資料Hive
- 大資料4.2 -- hive資料庫大資料Hive資料庫
- 扣丁學堂大資料開發之Hive基礎知識精華講解大資料Hive
- hive學習筆記之九:基礎UDFHive筆記
- hive學習筆記之六:HiveQL基礎Hive筆記
- 關於hive的基礎Hive
- [hive]hive資料模型中四種表Hive模型
- 資料倉儲元件:Hive環境搭建和基礎用法元件Hive
- 大資料5.1 - hive離線分析大資料Hive
- 大資料開發之路:hive篇大資料Hive
- Flume和Hive整合之hive sinkHive
- 好程式設計師大資料培訓分享Hive基礎知識講解程式設計師大資料Hive
- 大資料4.1 - Flume整合案例+Hive資料倉大資料Hive
- 【HIVE】hive 使用shell指令碼跑歷史資料Hive指令碼
- Hive學習之Hive的安裝Hive
- hive基礎總結(面試常用)Hive面試
- 大資料元件-Hive部署基於MySQL作為後設資料儲存大資料元件HiveMySql
- 大資料技術Hbase和Hive詳解大資料Hive
- Hive資料格式轉換Hive
- spark寫入hive資料SparkHive
- Hive 資料更新時間Hive
- Hive處理Json資料HiveJSON
- 基於Hive進行數倉建設的資源後設資料資訊統計:Hive篇Hive
- Hive基礎語法5分鐘速覽Hive
- 大資料:大資料之基礎語法大資料
- hive(4)——後設資料概述Hive
- 掌握Hive資料儲存模型Hive模型
- sqoop用法之mysql與hive資料匯入匯出OOPMySqlHive
- 開源大資料叢集部署(十二)Ranger 整合 hive大資料RangerHive
- 大資料技術-hive視窗函式詳解大資料Hive函式
- Hive --------- hive 的優化Hive優化