不知不覺從事大數據開發,這麼長的時間一直沒有將知識進行一個體系化,現在終於決定要將所學技能整理一下了,哈哈哈哈(多虧了有個賢內助督促,幫我調整格式)。話不多說,我要開始了~。如果寫的有不對的地方,歡迎大家指正,勿噴~。
目錄
一、我對數據倉庫和數據庫二者的理解:
1.數據倉庫特點:
①存放的數據是靜態的、歷史的、不能進行隨意修改的,只能新增、查詢
②數據倉庫更加註重的是一個OLAP(聯機分析處理----數據分析的目標則是探索並挖掘數據價值,作爲企業高層進行決策的參考)的操作
③數據倉庫不推薦執行事務操作
2. 數據庫特點:
①更加註重的是在線、交易的、動態的數據
②數據庫更加註重的是一個OLTP(聯機事務處理 -----業務類系統主要供基層人員使用,進行一線業務操作)的操作
③數據庫的操作依賴更多的業務的事務操作
二、通常所說的 ETL(提取轉化加載):
E(Extract) :提取、採集
T(Transform) :轉化、標準化、格式化
介紹:數據清洗Data clean:去除無用數據
數據脫敏Data desensitization:剔除敏感數據,將敏感數據隱藏(編程"*", 還有加密,還有做映射), 一般情況下都是通過mr來做
L(Loading) :加載
介紹:把原始的數據轉化爲數據倉庫中建模好的格式或者標準的數據,然後在將標準化的數據加載到DW中的一個過程稱之爲ETL。(這裏的建模或者模型,說白了就是數據倉庫中表的定義,表和表之間的關係)
三、hive定義
Hive是建立在Hadoop上的數據倉庫基礎構架。它提供了一系列的工具,可以用來進行數據提取轉化加載(ETL),這是一種可以存儲、查詢和分析存儲在Hadoop中的海量數據的機制。Hive 定義了簡單的類SQL查詢語言,稱爲HQL,它允許熟悉SQL的用戶查詢數據。同時,這個語言也允許熟悉MapReduce開發者的開發自定義的mapper和 reducer來處理內建mapper和reducer無法完成的複雜的分析工作。
Hive是SQL解析引擎,它將SQL語句轉譯成M/R Job然後在Hadoop執行。hive中的表其實就是hdfs的目錄,按照表名把文件夾分開。如果是分區表,則分區值是子文件夾,我們可以直接在M/R的job中直接使用這些數據。
四、hive數據的存儲
1、Hive的數據存儲基於Hadoop HDFS
2、Hive沒有專門的數據存儲格式
3、存儲結構主要包括:數據庫、文件、表、視圖、索引
4、Hive默認可以直接加載文本文件(TextFile),還支持SequenceFile、RCFile 、ORCFile、Parquet
5、創建表時,指定Hive數據的列分隔符與行分隔符,Hive即可解析數據
6、 hive的元數據存在於mysql中,在mysql中會有一個hive庫,存放相應的表,一共53張表。(這是在hive配置文件中指定的)
五、Hive的元數據倉庫
1、metastore是hive元數據的集中存放地。
2、metastore默認使用內嵌的derby數據庫作爲存儲引擎
3、Derby引擎的缺點:一次只能打開一個會話
4、實踐中多使用MySQL作爲外置存儲引擎,多用戶同時訪問
六、hive的運行方式
1、集羣模式:
在生產中的運行方式,以mr、spark、tez作爲計算引擎,進行分佈式計算。
2、本地模式:
set hive.exec.mode.local.auto=true,這就可以在hive中進行簡單的測試
七、hive的訪問方式
1、CLI(命令行)
(1)通過hive的腳本
hive -e(接的是hql語句,可以是多條語句,用""引起來)
例如:hive -e "set hive.cli.print.header=true;use mydb1; show tables; select * from t;"
hive - f (接的是hql腳本)
例如:hive -f hive-script.hql
這兩種方式,可以將最終的執行結果輸出重定向到某一個文件中,需要添加兩個參數-S
hive -S -f hive-script.hql > resutl.csv(輸出重定向,有覆蓋功能)
hive -S -f hive-script.hql >> resutl.csv (輸出重定向,有追加功能)
2、JAVA API:
hive-jdbc
今天就先總結到這裏,下面一篇文章,我會介紹一下hive的安裝以及hive表的一些概念以及hive中數據的類型~