hive :簡單查詢不走mapreduce
阿新 • • 發佈:2018-10-31
在hadoop生態圈中屬於資料倉庫的角色。他能夠管理hadoop中的資料,同時可以查詢hadoop中的資料。
本質上講,hive是一個SQL解析引擎。Hive可以把SQL查詢轉換為MapReduce中的job來執行。
hive有一套對映工具,可以把SQL轉換為MapReduce中的job,可以把SQL中的表、欄位轉換為HDFS中的檔案(夾)以及檔案中的列。
這套對映工具稱之為metastore,一般存放在derby、mysql中。
hive在hdfs中的預設位置是/user/hive/warehouse,是由配置檔案hive-conf.xml中屬性hive.metastore.warehouse.dir決定的。
hive 0.10.0為了執行效率考慮,簡單的查詢,就是隻是select,不帶count,sum,group by這樣的,都不走map/reduce,直接讀取hdfs檔案進行filter過濾。
這樣做的好處就是不新開mr任務,執行效率要提高不少,但是不好的地方就是使用者介面不友好,有時候資料量大還是要等很長時間,但是又沒有任何返回。
1、本地模式下,hive可以簡單的讀取目錄路徑下的資料,然後輸出格式化後的資料到控制檯,比如有本地員工employee,當執行 select * from employee 時,直接將檔案中資料格式化輸出。
2、查詢語句中的過濾條件只是分割槽欄位的情況下不會進行Mapreduce。
設定:
在hive-site.xml裡面有個配置引數叫
hive.fetch.task.conversion = more
將這個引數設定為more,簡單查詢就不走map/reduce了,設定為minimal,就任何簡單select都會走map/reduce。