1.left semi join 子句中右邊的表只能在 on 子句中設定過濾條件,在 where 子句、select 子句或其他地方過濾都不行。
例子:select * from person g left semi join exptest t on g.name = t.name where g.name='wang';
--語句可以查詢,因為
where g.name='wang';
用到時左表。
select * from person g left semi join exptest t on g.name = t.name where t.name='wang';--語句報錯,因為 t.name='wang';是右邊表
failed: execution error, return code 130 from org.apache.hadoop.hive.ql.exec.mr.mapredlocaltask
2.對待右表中重複key的處理方式差異:因為 left semi join 是 in(keyset) 的關係,遇到右表重覆記錄,左表會跳過,而 join on 則會一直遍歷。最後的結果是這會造成效能,以及 join 結果上的差異。
例子:person
表的資料: 1
wang
["lol","data2"] 2
tom["跳槽"] 3
jack
["得分","阿史蒂芬","大師傅"] 4
jim["登陸","餓啊分"]
exptest表的資料:
hive (hive)> select * from exptest; ok
exptest.id
exptest.name
exptest.likes 1
wang
["lol","data2"] 1
wang
["lol","data2"]
select * from person g join exptest t on g.name = t.name;
查詢結果:
查詢結果:
(4)left semi join 中最後 select 的結果只許出現左表,因為右表只有 join key 參與關聯計算了,而 join on 預設是整個關係模型都參與計算了。
select * from person g left semi join exptest t on g.name = t.name;
查詢結果:
windows 半開連線數
所謂 tcp半開連線 簡單的說就是發起了tcp連線請求,但尚處於建立連線階段,雙方還無法進行互相通訊的狀態。那麼 tcp半開連線數量限制 就是指,限制連線發起者最多同時存在 tcp半開連線 的數量。在windows xp sp2中,微軟首次引入了半開連線數限制,限制數量 10。限制包括了後續的xp ...
windows 半開連線數
所謂 tcp半開連線 簡單的說就是發起了tcp連線請求,但尚處於建立連線階段,雙方還無法進行互相通訊的狀態。那麼 tcp半開連線數量限制 就是指,限制連線發起者最多同時存在 tcp半開連線 的數量。在windows xp sp2中,微軟首次引入了半開連線數限制,限制數量 10。限制包括了後續的xp ...
18 7 3 檢測半開啟連線
18.7.3 檢測半開啟連線 如果一方已經關閉或異常終止連線而另一方卻還不知道,我們將這樣的tcp連線稱為半開啟的 任何一端的主機異常都可能導致發生這種情況。只要不打算在半開啟連線上傳輸資料,仍處於連線狀態的一方就不會檢測到 另一方已經出現異常。node1 root test tcpdump s i...