Hadoop實戰 11 hive閱讀筆記

2021-10-07 15:21:19 字數 3423 閱讀 5760

hive安裝、配置

error logs錯誤日誌

hive錶可儲存的資料型別

hive ddl

資料操作

hive是hadoop的乙個重要子專案,封裝mapreduce程式設計技術,提供hive ql的類sql的程式設計介面,方便快捷的訪問和使用mapreduce。

hive是乙個基於hadoop檔案系統上的資料倉儲結構,提供的功能:資料etl(抽取extern、轉換transit和載入loading)工具、資料儲存管理和大型資料集的查詢與分析能力。

hive不能提供:

資料排序和查詢cache

不提供實時的查詢和記錄級的更新

hive能提供:

不變的大規模資料集(網路日誌)上的批量任務

hive優點:

可擴充套件性(基於hadoop平台,可以自動適應機器數目和資料量的動態變化)

可延展性(結合mapreduce和使用者定義的函式庫)?

良好的容錯和低約束的資料輸入格式?

hive本身建立在hadoop的體系架構上,提供了乙個sql解析過程,從外部獲取命令,通過編譯器將外部命令解析成乙個mapreduce可執行計畫,並按照該計畫生成mapreduce任務交給hadoop集群處理

hive的儲存是建立在hadoop檔案系統之上,hive本身沒有專門的資料儲存格式,也不能為資料建立索引。

hive主要包含四種資料型別:

每個表在hive中都對應乙個儲存目錄,例如,乙個表htable在hdfs中的路徑為/datawarehouse/htable,其中/datawarehouse是由hive-site.xml配置檔案中的$指定的資料倉儲的目錄,所有的表資料(除外部表)都儲存在這個目錄中。

ps:資料倉儲和大資料的區別見資料倉儲與大資料的區別?,基於hive構建的是離線資料倉儲,提供離線計算;實時的資料倉儲:我們是用flink、storm來做;使用大資料技術來實現資料倉儲的構建和管理。

分割槽可以看做是下的子目錄

可以看做是分割槽下的檔案

外部表????

建立內部表,會將資料移動到資料倉儲指向的路徑中;當建立外部表,則僅記錄資料所在的路徑,不對資料的位置做任何改變。???

但刪除表時,內部表的元資料和資料會被一起刪除,而外部表只刪除元資料,不刪除資料。

目前hive將元資料儲存在rdbms中,比如mysql、derby中。

hive三種連線derby資料庫的方式:

hive使用log4j記錄日誌,在預設情況下,日誌檔案的記錄等級為warn(儲存緊急程度為warn及以上的錯誤資訊),儲存在/tmp資料夾下。

若想在終端檢視到日誌內容,可以設定如下引數達到目的

hive -hiveconf hive.root.logger=info, console

使用者也可以改變日誌記錄等級

hive -hiveconf hive.root.logger=info, d***

純文字檔案 stored as textfile

可以進行資料壓縮,stored as sequencefile

還支援建立帶有分割槽的表,可以在建立時使用participation by語句

乙個表可以擁有乙個或多個分割槽,每個分割槽單獨存放在乙個目錄下。而且,表和分割槽都可以對某個列進行clustered by操作,將若干個列放入乙個桶中。

drop table table_name

drop table用於刪除表的元資料和資料

alter table語句用於改變乙個已經存在的表結構,比如增加列或分割槽,改變serde、新增表和serde的屬性或重新命名表。

增加分割槽

alter table add partition來對錶增加分割槽,當分割槽名為字串時加引號。

例如:

刪除分割槽

alter table drop partition來刪除分割槽,分割槽的元資料和資料將被一併刪除,例如

alter table page_view

drop partition (dt=『2010-08-08』,country=『us』)

重新命名表

alter table table_name rename to new_table_name

這個命令可以讓使用者為表更名,但資料所在的位置和分割槽名並不改變。換而言之,老的表名並未釋放,對老表的修改會改變新錶的資料

改變列名字、型別、位置、注釋

注意:列的改變智慧型修改hive的元資料,而不會改變實際資料,使用者應該確保元資料的定義和實際資料結構的一致性。

增加、更新列

增加表屬性

增加serde屬性

改變表檔案格式和組織

建立 表檢視

刪除表檢視

drop view view_name

建立函式

create temporary function function_name as class_name

刪除函式

drop temporary function function_name

在hive中,該語句提供一種方法對現有的資料和元資料進行查詢

顯示表show tables identifier_with_wildards

列出所有基表與給定正規表示式相匹配的檢視

顯示分割槽

show participations table_name

列出給定基表中所有的現有分割槽,按字母排序

顯示表、分割槽擴充套件

顯示函式

show functions 「a.*"

描述表/列

describe table_name

向表中載入檔案

將查詢結果插入hive表

將查詢結果寫入檔案系統

Hadoop實戰應用

1 雲盤儲存系統通過hdfs實現 2 hadoop三大發行版本 1 apache 基礎版本,實際企業使用比較少 2 cloudera cdh cloudera的hadoop發行版 clouderamanager 集群軟體分發及管理監控 3 hortonworks hdp hortonworks da...

hadoop實戰隨筆 0712

org.apache.hadoop.conf 定義了系統引數的配置檔案處理api。org.apache.hadoop.fs 定義了抽象的檔案系統api org.apache.hadoop.dfs hadoop分布式檔案系統 hdfs 模組的實現 org.apache.hadoop.mapred ha...

hadoop實戰隨筆 0720

hdfs命令 distcp 一般用於在兩個hdfs集群間傳遞資料的情況。namenode format 格式化dfs檔案系統 secondarynamenode 執行dfs的secondarynamenode程序 namenode 執行dfs的namenode程序 datanode 執行dfs的da...