hive踩過的小坑

2022-04-29 18:12:06 字數 1422 閱讀 2449

上週使用hive做一些操作,幾個小問題糾結很久。特此記錄下;

hive是基於hadoop的乙個資料倉儲工具,可以將結構化的資料檔案對映為一張資料庫表,並提供簡單的sql查詢功能,可以將sql語句轉換為mapreduce任務進行執行。 其優點是學習成本低,可以通過類sql語句快速實現簡單的mapreduce統計,不必開發專門的mapreduce應用,十分適合資料倉儲的統計分析。

hive 構建在基於靜態批處理的hadoop 之上,hadoop 通常都有較高的延遲並且在作業提交和排程的時候需要大量的開銷。因此,hive 並不能夠在大規模資料集上實現低延遲快速的查詢,例如,hive 在幾百mb 的資料集上執行查詢一般有分鐘級的時間延遲。

因此,hive 並不適合那些需要低延遲的應用,例如,聯機事務處理(oltp)。hive 查詢操作過程嚴格遵守hadoop mapreduce 的作業執行模型,hive 將使用者的hiveql 語句通過直譯器轉換為mapreduce 作業提交到hadoop 集群上,hadoop 監控作業執行過程,然後返回作業執行結果給使用者。hive 並非為聯機事務處理而設計,hive 並不提供實時的查詢和基於行級的資料更新操作。hive 的最佳使用場合是大資料集的批處理作業,例如,網路日誌分析。

主要分為以下幾個部分:

使用者介面主要有三個:cli,client 和 wui。其中最常用的是 cli,cli 啟動的時候,會同時啟動乙個 hive 副本。client 是 hive 的客戶端,使用者連線至 hive server。在啟動 client 模式的時候,需要指出 hive server 所在節點,並且在該節點啟動 hive server。 wui 是通過瀏覽器訪問 hive。

hive 將元資料儲存在資料庫中,如 mysql、derby。hive 中的元資料報括表的名字,表的列和分割槽及其屬性,表的屬性(是否為外部表等),表的資料所在目錄等。

直譯器、編譯器、優化器完成 hql 查詢語句從詞法分析、語法分析、編譯、優化以及查詢計畫的生成。生成的查詢計畫儲存在 hdfs 中,並在隨後由 mapreduce 呼叫執行。

hive 的資料儲存在 hdfs 中,大部分的查詢由 mapreduce 完成(包含 * 的查詢,比如 select * from tbl 不會生成 mapreduce 任務)。

load data local inpath "/opt/test2.txt"

into

table wyp;

坑1、local 必須是hiver server所在機器的路徑;

坑2、test2檔案owner需要為執行命令的使用者;

load data inpath "/data/datawash/1.txt"

into

table table1; //意思是從hdfs的/data/datawash/1.txt寫入到table1所在目錄。

hive的load踩過的坑

load hive中load命令的使用語法 load data local inpath filepath overwrite into table tablename partition partcol1 val1,partcol2 val2 local 表示輸入檔案在本地檔案系統上。如果 loc...

git踩過的坑

4.git 修改當前的project的使用者名稱的命令為 git config user.name 你的目標使用者名稱 git 修改當前的project提交郵箱的命令為 git config user.email 你的目標郵箱名 如果你要修改當前全域性的使用者名稱和郵箱時,需要在上面的兩條命令中新增...

springboot踩過的坑

設定上下文路徑context path不生效 springboot 2.0之前的語法 server.context path xx 2.0之後的語法 server.servlet.context path xx 在配置yml時,報錯如下 caused by org.yaml.snakeyaml.sc...