Hive程式設計指南 要點總結(1)

2021-09-17 02:56:35 字數 945 閱讀 3395

1. 當對3個或更多的表進行join連線時,若是on子句都是使用相同的連線鍵的話,那麼只會產生乙個mapreduce任務。

2. 使用者在進行多表查詢時,需要保證連續查詢的表的大小從左至右是依次增大的。因為hive假定查詢中最後乙個表是最大的表,在對每行記錄進行連線操作時,它會嘗試將其他表快取起來,然後掃瞄最後那個大表進行計算。

3. map-side join:使用broadcast實現map側join的方式可通過如下設定,將broadcast的閾值設定得足夠大,再通過sql進行join

set spark.sql.autobroadcastjointhreshold=104857600;

insert overwrite table test_join

select test_new.id, test_new.name

from test

join test_new

on test.id = test_new.id

4. on條件語句中的分割槽過濾條件在外連線outer join中是無用的,不過在內連線inner join 中是有效的。

5. 左半開連線left semi join會返回滿足on條件的左邊表的記錄,相比於內連線inner join,是一種特殊優化的join語句,等價於in & exist語法結構。semi join比inner join更高效,對於左表中的一條指定記錄,一旦在右表中找到滿足on條件的記錄就會停止掃瞄右表。即對於左表的一條指定記錄,只會保留一條右表匹配記錄,而inner join則是返回了多條匹配記錄。  

注意select和where語句中不能出現右表中的字段。 另外,hive不支援右半開連線。

6. 笛卡爾積join,即不加on條件的join,其結果集的大小等於左表行數乘右錶行數的大小。執行時間長且執行緩慢。

7. order by,sort by,distribute by,cluster by區別

hive優化要點總結

個人認為總體兩種思想 1 讓伺服器盡可能的多做事情,榨乾伺服器資源,以最高系統吞吐量為目標 再好的硬體沒有充分利用起來,都是白扯淡。比如 1 啟動一次job盡可能的多做事情,乙個job能完成的事情,不要兩個job來做 通常來說前面的任務啟動可以稍帶一起做的事情就一起做了,以便後續的多個任務重用,與此...

《Hive程式設計指南》之Hive環境安裝

hive 1 解壓 2 配置 hadoop home hive home等環境變數 3 修改配置檔案hive conf cp hive default.xml.template hive site.xml 修改hive.metastore.schema.verification的值為false 建立...

Hive程式設計指南07 索引

hive索引 建立索引 create index tablename index on table col1 as org.apache.hadoop.hive.ql.index.compact.compactindexhandler with deferred rebuild idxpropert...