欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Hive遞歸計(jì)算實(shí)踐:臨時(shí)表+循環(huán)迭代實(shí)現(xiàn)任意層級(jí)展開

Hive遞歸計(jì)算實(shí)踐:臨時(shí)表+循環(huán)迭代實(shí)現(xiàn)任意層級(jí)展開 Hive SQL 寫遞歸計(jì)算一直是數(shù)倉(cāng)工程師繞不過(guò)去的一道坎。業(yè)務(wù)方一句“我要看全鏈路組織架構(gòu)”或者“把這個(gè) BOM 的末級(jí)物料全部展開”落到 Hive SQL 上就是一場(chǎng)噩夢(mèng)。MySQL 里一條WITH RECURSIVE能搞定的事在 Hive 里就是另一套邏輯。我之前用“寫死 20 層自連接”的方式湊合過(guò)一版姑且叫 1.0后來(lái)業(yè)務(wù)層級(jí)超過(guò) 20 層SQL 直接廢掉才認(rèn)真做了這套 2.0 方案。這套 2.0 的核心思路并不復(fù)雜臨時(shí)表 循環(huán)迭代每一輪只掃增量數(shù)據(jù)再用一張總表防環(huán)路、去重復(fù)。實(shí)測(cè)下來(lái)千萬(wàn)級(jí)節(jié)點(diǎn)、幾十層深度的場(chǎng)景都能穩(wěn)定跑完更重要的是不會(huì)因?yàn)槟硞€(gè)環(huán)導(dǎo)致任務(wù)跑到天荒地老。這篇文章就完整記錄一下這套方案的設(shè)計(jì)思路、完整代碼、性能調(diào)優(yōu)和排坑實(shí)錄給還在 Hive 里硬剛遞歸的朋友們一個(gè)可以直接抄的作業(yè)。1. 為什么需要一套 2.0 方案Hive 本質(zhì)上是為分布式批處理設(shè)計(jì)的標(biāo)準(zhǔn)的 SQL 遞歸查詢能力一直不是它的強(qiáng)項(xiàng)。低版本 Hive 根本不支持WITH RECURSIVE新版本雖然借助 Calcite 加了這個(gè)語(yǔ)法但生產(chǎn)環(huán)境里依賴它跑大規(guī)模遞歸任務(wù)的人依然很少后面我會(huì)具體講原因。所以大部分?jǐn)?shù)倉(cāng)團(tuán)隊(duì)實(shí)際上都在用“土辦法”實(shí)現(xiàn)遞歸。1.1 1.0 方案寫死層數(shù)的自連接1.0 版本的思路很直白既然不知道最深多少層那就假設(shè)一個(gè)最大值比如 20 層然后用LEFT JOIN一層層往上拼最后用UNION ALL合并所有層的結(jié)果。這種方案應(yīng)付有限的、明確已知層級(jí)的需求確實(shí)沒問題。我最早處理一個(gè)“三二級(jí)部門展開”的需求時(shí)就是這么干的。但問題也很明顯深度是寫死的。一旦需求變成“動(dòng)態(tài)層級(jí)”SQL 就廢了。SQL 冗長(zhǎng)得可怕。20 層JOIN的 SQL 要寫幾百行維護(hù)起來(lái)頭大。性能不穩(wěn)定。每一層JOIN都會(huì)對(duì)上一步的全量結(jié)果再掃一遍越到后面越慢。1.2 2.0 方案要解決的核心問題2.0 在設(shè)計(jì)之初定了幾個(gè)明確目標(biāo)支持任意深度最多只受集群資源和參數(shù)限制。每一輪迭代只處理新發(fā)現(xiàn)的增量數(shù)據(jù)而不是全量重算。防環(huán)路。不能因?yàn)?A→B→C→A 這種環(huán)導(dǎo)致死循環(huán)。每一輪結(jié)果都帶有層級(jí)標(biāo)記方便業(yè)務(wù)側(cè)按“第幾層”做過(guò)濾和分析。這套方案從設(shè)計(jì)、編碼到調(diào)優(yōu)大概花了一周落地之后穩(wěn)定跑了很久也經(jīng)歷了多次數(shù)據(jù)量和深度翻倍的考驗(yàn)。下面把方案完整拆開講。2. 遞歸計(jì)算的主流實(shí)現(xiàn)路線對(duì)比在做 2.0 之前我把當(dāng)時(shí)業(yè)界常見的幾種 Hive 遞歸方案都捋了一遍這里直接給結(jié)論方便你做技術(shù)選型。2.1 寫死層數(shù)的自連接方案就是 1.0 的做法適用于層級(jí)明確且較淺的場(chǎng)景。優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單、不依賴任何腳本缺點(diǎn)是靈活性差、性能不可控。-- 示例展開 3 層部門 SELECT t1.dep_id AS root_dep_id, t3.dep_id AS child_dep_id, CASE WHEN t2.dep_id IS NULL THEN 1 WHEN t3.dep_id IS NULL THEN 2 ELSE 3 END AS depth FROM ods_dep_rel t1 LEFT JOIN ods_dep_rel t2 ON t1.dep_id t2.parent_dep_id LEFT JOIN ods_dep_rel t3 ON t2.dep_id t3.parent_dep_id WHERE t1.parent_dep_id IS NULL;層數(shù)少的時(shí)候還能忍層數(shù)多起來(lái)這段 SQL 會(huì)膨脹到你不想維護(hù)。2.2 原生 WITH RECURSIVE 方案從 Hive 4.0 開始社區(qū)通過(guò) Calcite 引入了原生遞歸 CTE 支持。理論上你可以寫這樣的語(yǔ)句WITH RECURSIVE dep_tree AS ( SELECT dep_id, parent_dep_id, dep_name, 0 AS loop_id FROM ods_dep_rel WHERE parent_dep_id IS NULL UNION ALL SELECT c.dep_id, c.parent_dep_id, c.dep_name, t.loop_id 1 FROM dep_tree t JOIN ods_dep_rel c ON t.dep_id c.parent_dep_id ) SELECT * FROM dep_tree;但在實(shí)際生產(chǎn)環(huán)境中我對(duì)這套語(yǔ)法保持謹(jǐn)慎態(tài)度。一方面是因?yàn)楹芏嗥髽I(yè)的 Hive 還是 3.x 版本另一方面是原生遞歸 CTE 在底層執(zhí)行時(shí)容易出現(xiàn)性能抖動(dòng)資源消耗不太好預(yù)估。小數(shù)據(jù)量驗(yàn)證邏輯沒問題一旦上了十億級(jí)節(jié)點(diǎn)還是老老實(shí)實(shí)用迭代方案穩(wěn)妥。2.3 臨時(shí)表 循環(huán)迭代方案這就是 2.0 的核心路線。思路是用一張“結(jié)果總表”保存已經(jīng)找到的所有節(jié)點(diǎn)再用一張“增量表”保存本輪新發(fā)現(xiàn)的節(jié)點(diǎn)每輪迭代從增量表出發(fā)向外擴(kuò)展用總表做去重和防環(huán)。這個(gè)方案的優(yōu)勢(shì)很明顯每一輪只掃增量數(shù)據(jù)而不是全量數(shù)據(jù)性能可控深度上限可以人為配置邏輯完全透明每輪跑了多少數(shù)據(jù)一目了然。缺點(diǎn)是需要寫 Shell 腳本來(lái)控制循環(huán)對(duì)開發(fā)者的工程能力有一定要求。2.4 自定義 UDF / Transform 腳本方案還可以用 Python 腳本配合TRANSFORM語(yǔ)法在腳本內(nèi)部實(shí)現(xiàn)遞歸邏輯。這種方式邏輯自由度最高但受限于單機(jī)內(nèi)存和腳本執(zhí)行模型數(shù)據(jù)量大時(shí)容易成為瓶頸。我一般只在“遞歸內(nèi)部有復(fù)雜業(yè)務(wù)規(guī)則”時(shí)才會(huì)考慮它普通展開場(chǎng)景用循環(huán)迭代就夠了。下面用一張表把這幾種路線的特點(diǎn)匯總一下方案深度上限實(shí)現(xiàn)復(fù)雜度性能表現(xiàn)適用場(chǎng)景寫死層數(shù)自連接固定層數(shù)低層數(shù)越多越差淺層級(jí)、需求穩(wěn)定原生 WITH RECURSIVE無(wú)低受引擎影響大小數(shù)據(jù)量、Hive 4.0臨時(shí)表循環(huán)迭代可配置中可控需調(diào)優(yōu)企業(yè)級(jí)大規(guī)模數(shù)據(jù)Python UDF 遞歸受單機(jī)內(nèi)存限制高中低小數(shù)據(jù)量、復(fù)雜規(guī)則我最終選擇的是“臨時(shí)表 循環(huán)迭代”下面詳細(xì)講它的設(shè)計(jì)邏輯。3. 2.0 方案核心設(shè)計(jì)雙表迭代框架3.1 結(jié)果總表 增量表的協(xié)同工作方式整套方案的核心是兩個(gè)表結(jié)果總表TOTAL和增量表INC。每一輪的迭代動(dòng)作可以做如下拆解從上一輪的增量表中取數(shù)據(jù)去關(guān)聯(lián)子節(jié)點(diǎn)。關(guān)聯(lián)出來(lái)的新節(jié)點(diǎn)和結(jié)果總表做LEFT JOIN如果已經(jīng)存在則過(guò)濾掉。過(guò)濾后的數(shù)據(jù)寫入新的增量表。將新增量合并進(jìn)結(jié)果總表。如果新增量為空或者達(dá)到了設(shè)定的最大迭代次數(shù)循環(huán)終止。這個(gè)流程里最關(guān)鍵的優(yōu)化點(diǎn)在于每輪迭代的輸入是“上一輪的增量”而不是“歷史全量”。這樣一來(lái)數(shù)據(jù)增長(zhǎng)不是隨層數(shù)線性疊加的整體掃描量小很多這正是 2.0 比 1.0 性能好的根本原因。3.2 環(huán)路檢測(cè)與終止條件設(shè)計(jì)防環(huán)路是遞歸計(jì)算里最不能忽略的一環(huán)。環(huán)路指的是數(shù)據(jù)里出現(xiàn)了 A→B→C→A 這種循環(huán)引用。在雙表迭代的設(shè)計(jì)下環(huán)路其實(shí)已經(jīng)天然被結(jié)果總表?yè)踝×巳魏喂?jié)點(diǎn)只要被訪問過(guò)再次出現(xiàn)時(shí)會(huì)被總表過(guò)濾掉。所以迭代不會(huì)因?yàn)榄h(huán)路而無(wú)限循環(huán)最多遍歷完全部節(jié)點(diǎn)就自然會(huì)停下來(lái)。不過(guò)為了更早地剪枝節(jié)省無(wú)謂的 IO還可以在迭代 SQL 里加一個(gè)路徑字段用find_in_set判斷當(dāng)前節(jié)點(diǎn)是否已經(jīng)出現(xiàn)在路徑上。這種做法的代價(jià)是每行都要攜帶一段路徑字符串層級(jí)很深時(shí)字符串會(huì)很長(zhǎng)影響性能。我的經(jīng)驗(yàn)是一般組織架構(gòu)類數(shù)據(jù)層級(jí)小于 20 層用路徑檢測(cè)沒問題如果是 BOM 展開這種層級(jí)可能上百的場(chǎng)景僅靠總表過(guò)濾就夠了路徑檢測(cè)不做也罷。下面是我在實(shí)際腳本里用的兩個(gè)終止條件本輪增量為空說(shuō)明已經(jīng)遞歸到底了正常結(jié)束。迭代次數(shù)達(dá)到預(yù)設(shè)的MAX_LOOP說(shuō)明可能存在異常數(shù)據(jù)比如深層次環(huán)強(qiáng)制退出并告警。3.3 數(shù)據(jù)傾斜與發(fā)散節(jié)點(diǎn)的處理思路遞歸迭代中最容易出性能問題的是“發(fā)散節(jié)點(diǎn)”。舉個(gè)例子某個(gè)根部門下面掛了十萬(wàn)個(gè)葉子部門那某一輪迭代中這十萬(wàn)條子節(jié)點(diǎn)記錄會(huì)全部由這一個(gè)根部門產(chǎn)生。在 Hive 的分布式計(jì)算模型下這意味著某一個(gè) Reduce 要處理巨大的數(shù)據(jù)量跑得比其它所有 Reduce 都慢也就是典型的數(shù)據(jù)傾斜。處理思路有幾種對(duì)關(guān)聯(lián)鍵做加鹽處理把大節(jié)點(diǎn)的數(shù)據(jù)打散到多個(gè) Reduce。拆根并行。如果業(yè)務(wù)允許把不同的根節(jié)點(diǎn)分組拆成多個(gè)獨(dú)立任務(wù)并行跑。如果增量表和關(guān)聯(lián)表都不大比如小于 2GB直接加MAPJOIN提示把關(guān)聯(lián)表加載到內(nèi)存里繞開 Shuffle。另外還有一個(gè)容易忽略的問題臟數(shù)據(jù)導(dǎo)致的“假發(fā)散”。如果源表里存在大量parent_dep_id為空字符串或特殊字符的孤兒節(jié)點(diǎn)它們會(huì)在某一輪被同時(shí)關(guān)聯(lián)出來(lái)造成一輪迭代的數(shù)據(jù)量暴漲。建表時(shí)對(duì)這種情況要有心理準(zhǔn)備清洗數(shù)據(jù)的時(shí)候要一并處理。4. 實(shí)操全流程完整跑通一個(gè)部門樹遞歸展開下面用一個(gè)經(jīng)典場(chǎng)景——部門樹展開——走一遍完整流程。假設(shè)有一張部門關(guān)系表ods_dep_rel我把它簡(jiǎn)化成下面這種結(jié)構(gòu)CREATE TABLE IF NOT EXISTS ods_dep_rel ( dep_id STRING COMMENT 部門id, parent_dep_id STRING COMMENT 上級(jí)部門id, dep_name STRING COMMENT 部門名稱, project_id STRING COMMENT 業(yè)務(wù)線標(biāo)識(shí) ) COMMENT 部門關(guān)系原始表 PARTITIONED BY (dt STRING COMMENT 數(shù)據(jù)日期) STORED AS ORC;需求非常明確給定業(yè)務(wù)線project_id找出每個(gè)根部門下所有層級(jí)的子部門并記錄每個(gè)子部門相對(duì)于根部門的層級(jí)深度。4.1 初始化 SQL生成第 0 層數(shù)據(jù)第 0 層就是根節(jié)點(diǎn)。實(shí)際業(yè)務(wù)里根節(jié)點(diǎn)的定義可能不同有的是parent_dep_id IS NULL有的是parent_dep_id 還有的是設(shè)置了專門的根標(biāo)識(shí)字段這里以最常見的parent_dep_id IS NULL為例。-- init_dep_tree.sql INSERT OVERWRITE TABLE tmp_dep_tree_prev SELECT dep_id AS root_dep_id, dep_id AS dep_id, dep_name AS dep_name, 0 AS loop_id, cast(dep_id AS STRING) AS path_str FROM ods_dep_rel WHERE dt ${hiveconf:dt} AND project_id ${hiveconf:project_id} AND parent_dep_id IS NULL;這輪產(chǎn)出的tmp_dep_tree_prev表既是初始結(jié)果集也是第一輪迭代的增量輸入。-- 創(chuàng)建結(jié)果總表如果不存在 CREATE TABLE IF NOT EXISTS tmp_dep_tree_total ( root_dep_id STRING, dep_id STRING, dep_name STRING, loop_id INT, path_str STRING ) STORED AS ORC;然后把初始數(shù)據(jù)寫入總表INSERT INTO TABLE tmp_dep_tree_total SELECT * FROM tmp_dep_tree_prev;注意這里用的是INSERT INTO因?yàn)榭偙硎侵疠喿芳拥摹?.2 單輪迭代 SQL增量展開的核心邏輯每一輪迭代的核心 SQL 是同一套邏輯只是輸入表不同。落到腳本里我寫成參數(shù)化的 SQL 文件-- expand_once.sql -- 輸入tmp_dep_tree_prev上一輪增量 -- 輸出tmp_dep_tree_cur本輪新增量 INSERT OVERWRITE TABLE tmp_dep_tree_cur SELECT t.root_dep_id AS root_dep_id, c.dep_id AS dep_id, c.dep_name AS dep_name, t.loop_id 1 AS loop_id, concat_ws(,, t.path_str, c.dep_id) AS path_str FROM tmp_dep_tree_prev t JOIN ods_dep_rel c ON t.dep_id c.parent_dep_id LEFT JOIN tmp_dep_tree_total total ON c.dep_id total.dep_id AND t.root_dep_id total.root_dep_id WHERE c.dt ${hiveconf:dt} AND c.project_id ${hiveconf:project_id} AND total.dep_id IS NULL AND NOT find_in_set(c.dep_id, t.path_str) 0;這段 SQL 里最核心的是三個(gè)地方JOIN以上一輪增量表的dep_id去匹配源表的parent_dep_id找到所有直接子節(jié)點(diǎn)。LEFT JOIN ... WHERE total.dep_id IS NULL過(guò)濾掉已經(jīng)在結(jié)果總表里出現(xiàn)過(guò)的節(jié)點(diǎn)這就是上面說(shuō)的防環(huán)路、防重復(fù)。find_in_set(c.dep_id, t.path_str)從路徑上再做一次檢查防止環(huán)路在極深路徑下帶來(lái)額外的重復(fù)計(jì)算。每個(gè)細(xì)節(jié)都很重要。LEFT JOIN的過(guò)濾條件必須同時(shí)帶root_dep_id否則不同根節(jié)點(diǎn)下出現(xiàn)同一個(gè)部門 ID 時(shí)會(huì)被錯(cuò)誤過(guò)濾掉導(dǎo)致結(jié)果缺失。4.3 Shell 循環(huán)控制腳本讓迭代自動(dòng)收斂有了初始化 SQL 和單輪迭代 SQL剩下就是把循環(huán)串起來(lái)。我用的是 Bash 腳本 hive -f的方式每一輪迭代完成后檢查增量條數(shù)決定繼續(xù)還是終止。#!/bin/bash # 遞歸計(jì)算 2.0部門樹自動(dòng)展開 set -e DT2024-01-01 PROJECT_IDP001 MAX_LOOP50 CUR_LOOP0 HIVE_CONF-hiveconf dt${DT} -hiveconf project_id${PROJECT_ID} # 1. 初始化第 0 層 hive ${HIVE_CONF} -f ./init_dep_tree.sql hive ${HIVE_CONF} -e INSERT INTO TABLE tmp_dep_tree_total SELECT * FROM tmp_dep_tree_prev; # 2. 循環(huán)迭代 while [ ${CUR_LOOP} -lt ${MAX_LOOP} ]; do echo Loop: ${CUR_LOOP} # 執(zhí)行單輪擴(kuò)展 hive ${HIVE_CONF} -f ./expand_once.sql # 統(tǒng)計(jì)本輪增量行數(shù) INC_CNT$(hive -S ${HIVE_CONF} -e SELECT count(1) FROM tmp_dep_tree_cur; | tr -d ) echo Increment count: ${INC_CNT} if [ ${INC_CNT} -eq 0 ]; then echo No new increment, recursion finished. break fi # 合并增量到結(jié)果總表 hive ${HIVE_CONF} -e INSERT INTO TABLE tmp_dep_tree_total SELECT * FROM tmp_dep_tree_cur; # 輪轉(zhuǎn)表當(dāng)前增量變?yōu)橄乱惠喌妮斎?hive ${HIVE_CONF} -e INSERT OVERWRITE TABLE tmp_dep_tree_prev SELECT * FROM tmp_dep_tree_cur; CUR_LOOP$((CUR_LOOP 1)) done # 3. 輸出最終結(jié)果 hive ${HIVE_CONF} -e SELECT root_dep_id, dep_id, dep_name, loop_id FROM tmp_dep_tree_total ORDER BY root_dep_id, loop_id; 這段腳本有三個(gè)經(jīng)驗(yàn)點(diǎn)值得分享tr -d 是必要的。hive -S -e輸出的count結(jié)果往往帶一些空白字符不清理直接做數(shù)值比較會(huì)出問題。用INSERT OVERWRITE TABLE tmp_dep_tree_prev SELECT * FROM tmp_dep_tree_cur做表切換而不是TRUNCATE后原地插入是為了保持上一輪數(shù)據(jù)直到本輪完全成功。一旦中間某一步失敗舊的增量數(shù)據(jù)還在排查和恢復(fù)都會(huì)容易很多。循環(huán)里沒必要用break后再單獨(dú)把結(jié)果導(dǎo)出去直接到最后統(tǒng)一輸出即可。4.4 結(jié)果校驗(yàn)確認(rèn)遞歸沒有算錯(cuò)遞歸算完了怎么確認(rèn)結(jié)果對(duì)不對(duì)我的經(jīng)驗(yàn)是至少做兩層校驗(yàn)。第一層總數(shù)校驗(yàn)。用源表跑一個(gè)不依賴遞歸的聚合查詢比如每個(gè)部門的直接子部門數(shù)再和自己算出來(lái)的結(jié)果做交叉比對(duì)。如果源表本身有“該部門所有后代部門數(shù)”這樣的冗余字段校驗(yàn)會(huì)更直接。第二層層級(jí)校驗(yàn)。隨機(jī)挑幾個(gè)已知深度的部門對(duì)照結(jié)果表里的loop_id確認(rèn)深度是否正確。這一步雖然樸素但能有效發(fā)現(xiàn)初始化時(shí)根節(jié)點(diǎn)定義錯(cuò)誤導(dǎo)致的全盤偏移。-- 校驗(yàn)示例檢查是否有節(jié)點(diǎn)的 loop_id 與路徑深度不一致 -- 正常情況下 path_str 里逗號(hào)的數(shù)量加 1 應(yīng)該等于 loop_id SELECT root_dep_id, dep_id, loop_id, path_str, (LENGTH(path_str) - LENGTH(REPLACE(path_str, ,, )) 1) AS path_depth FROM tmp_dep_tree_total WHERE loop_id ! (LENGTH(path_str) - LENGTH(REPLACE(path_str, ,, )) 1);這個(gè) SQL 利用了逗號(hào)計(jì)數(shù)的技巧很直觀。有經(jīng)驗(yàn)的讀者可能已經(jīng)想到這其實(shí)也驗(yàn)證了路徑拼接邏輯是否正確。5. 性能調(diào)優(yōu)與踩坑記錄2.0 方案里踩過(guò)的坑一點(diǎn)也不比業(yè)務(wù)邏輯少。選幾個(gè)最有代表性的寫出來(lái)。5.1 迭代輪次過(guò)多導(dǎo)致的小文件問題每一輪迭代都會(huì)生成一批新的 ORC 文件如果最大迭代深度是 30 層結(jié)果總表里會(huì)累積很多小文件。時(shí)間久了總表在做LEFT JOIN過(guò)濾時(shí)甚至?xí)驗(yàn)樵獢?shù)據(jù)膨脹而變慢。我的處理方式是在腳本結(jié)束后對(duì)結(jié)果總表做一次合并壓縮。INSERT OVERWRITE TABLE tmp_dep_tree_total SELECT * FROM tmp_dep_tree_total DISTRIBUTE BY root_dep_id;DISTRIBUTE BY root_dep_id會(huì)讓同一個(gè)根節(jié)點(diǎn)的數(shù)據(jù)落到同一個(gè) Reduce不僅合并了小文件還能讓后續(xù)查詢按根節(jié)點(diǎn)過(guò)濾時(shí)更快。5.2 大增量 join 時(shí)的任務(wù)卡頓當(dāng)某一輪增量特別大比如某個(gè)中間層節(jié)點(diǎn)數(shù)量暴漲時(shí)JOIN過(guò)程容易出現(xiàn)長(zhǎng)尾。我踩過(guò)最厲害的一次是在第 4 層迭代時(shí)單個(gè) Reduce 跑到 3 小時(shí)沒結(jié)束。排查之后發(fā)現(xiàn)是數(shù)據(jù)傾斜一個(gè)超大父節(jié)點(diǎn)帶了幾十萬(wàn)條子節(jié)點(diǎn)記錄全部路由到了同一個(gè) Reduce。解決方案是在迭代 SQL 的JOIN關(guān)聯(lián)鍵上做前綴加鹽或者直接把源表按parent_dep_id分桶。分桶后JOIN的 Shuffle 數(shù)據(jù)量會(huì)小很多實(shí)測(cè)性能提升非常明顯。不過(guò)加鹽方案會(huì)改變關(guān)聯(lián)邏輯對(duì)非傾斜節(jié)點(diǎn)來(lái)說(shuō)反而增加計(jì)算量。我的建議是先通過(guò)COUNT按parent_dep_id聚合確認(rèn)傾斜節(jié)點(diǎn)的量級(jí)再?zèng)Q定是否加鹽不要盲目?jī)?yōu)化。5.3 分區(qū)參數(shù)穿透導(dǎo)致的串?dāng)?shù)問題這個(gè)坑很隱蔽。在源表ods_dep_rel存在多分區(qū)的情況下如果迭代 SQL 里忘記寫c.dt ${hiveconf:dt}那么JOIN會(huì)掃描全分區(qū)。某一次我切換日期參數(shù)后忘了清理老的臨時(shí)表結(jié)果遞歸結(jié)果里混了上一個(gè)日期的歷史數(shù)據(jù)排查了很久。從那以后我養(yǎng)成了一個(gè)習(xí)慣所有迭代 SQL 的WHERE條件里源表分區(qū)條件必須寫全無(wú)論哪個(gè)環(huán)境執(zhí)行都能保證只讀當(dāng)天數(shù)據(jù)。5.4 常見報(bào)錯(cuò)速查表報(bào)錯(cuò)信息或現(xiàn)象可能原因解決辦法迭代一直不停止達(dá)到 MAX_LOOP存在深層次環(huán)路且總表防環(huán)邏輯有問題檢查L(zhǎng)EFT JOIN的關(guān)聯(lián)條件是否帶了root_dep_id檢查源數(shù)據(jù)是否有自關(guān)聯(lián)某一輪增量數(shù)據(jù)暴漲臟數(shù)據(jù)導(dǎo)致發(fā)散節(jié)點(diǎn)或孤兒節(jié)點(diǎn)大量掛載清洗源數(shù)據(jù)剔除parent_dep_id為空的孤兒記錄對(duì)關(guān)聯(lián)鍵做分桶結(jié)果總表小文件過(guò)多每輪迭代產(chǎn)生新文件未合并結(jié)束后用INSERT OVERWRITE ... DISTRIBUTE BY root_dep_id合并count(1)判斷不準(zhǔn)導(dǎo)致提前退出hive -S -e返回字符串帶空格用tr -d 清理后再做比較不同根節(jié)點(diǎn)下相同部門被過(guò)濾LEFT JOIN條件漏掉root_dep_id補(bǔ)上AND t.root_dep_id total.root_dep_id定位不到數(shù)據(jù)問題臨時(shí)表太多搞不清哪張是上一輪數(shù)據(jù)固定使用prev/cur輪轉(zhuǎn)命名不要?jiǎng)討B(tài)拼接表名6. 這套方案還能怎么擴(kuò)展如果只是做部門樹展開這套腳本已經(jīng)夠用了。但遞歸計(jì)算的場(chǎng)景遠(yuǎn)不止組織架構(gòu)。這里列幾個(gè)我實(shí)際做過(guò)的擴(kuò)展方向。6.1 BOM 物料多級(jí)展開BOM 展開和部門樹最大的區(qū)別在于子節(jié)點(diǎn)關(guān)聯(lián)父節(jié)點(diǎn)時(shí)還帶一個(gè)“用量”字段遞歸展開時(shí)要把路徑上的用量做乘積最終得到每一個(gè)末級(jí)物料的累計(jì)需求量。實(shí)現(xiàn)時(shí)只需要在迭代 SQL 的SELECT子句里多帶一個(gè)用量字段合并時(shí)做累乘即可。防環(huán)和終止邏輯完全復(fù)用。6.2 關(guān)系圖譜中的多度人脈查找比如“找出某個(gè)用戶 3 度以內(nèi)的所有關(guān)聯(lián)用戶”。這個(gè)場(chǎng)景本質(zhì)上就是限制深度的遞歸查找只需要在循環(huán)控制腳本里把MAX_LOOP設(shè)為 3并且在初始化 SQL 里固定好起始用戶即可。6.3 數(shù)據(jù)血緣追蹤數(shù)據(jù)倉(cāng)庫(kù)的表和字段之間存在“上游依賴”關(guān)系想查某個(gè)指標(biāo)字段的完整血緣鏈路可以用同樣的迭代框架把“父節(jié)點(diǎn)”換成“上游字段”把“子節(jié)點(diǎn)”換成“下游字段”。血緣數(shù)據(jù)的層級(jí)往往很深而且環(huán)路的可能性比組織架構(gòu)大不少這時(shí)候雙表防環(huán)機(jī)制的可靠性就顯得格外重要。最后說(shuō)點(diǎn)實(shí)在的這套 2.0 方案做完之后我再也沒有因?yàn)椤斑f歸查不出來(lái)”被業(yè)務(wù)方找過(guò)?;乜凑麄€(gè)優(yōu)化過(guò)程最值得投入精力的其實(shí)不是循環(huán)腳本本身而是對(duì)增量驅(qū)動(dòng)和防環(huán)機(jī)制的理解。很多做數(shù)據(jù)開發(fā)的朋友一聽到 Hive 遞歸就想著去裝插件、換引擎其實(shí)標(biāo)準(zhǔn) Hive 的臨時(shí)表迭代方案處理絕大多數(shù)生產(chǎn)需求都足夠了。如果看完這篇文章你只想記住一個(gè)點(diǎn)那我建議記住這句迭代 增量表 結(jié)果總表過(guò)濾是 Hive 里做遞歸的通用范式。這個(gè)范式一旦建立起來(lái)不管遇到組織架構(gòu)、BOM 展開還是關(guān)系圖譜都能快速套用最多就是改改表結(jié)構(gòu)、調(diào)調(diào)終止條件而已。下一次再有人跟你說(shuō)“Hive 做不了遞歸”你可以把這篇文章甩給他。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
天天久久人人| 婷婷六月天精品| 六月99天天婷婷激情综合| 伊人网啪啪| 婷婷久久五月| 思思 热 99| 国产熟女一区二区三区五月婷| 五月丁香亚洲综合| 可以直接看的av| 、激情六月天| 综合色网站| 高清无码视频网址| 亚洲99手机免费看视频 | 丁香婷婷老熟女综合网| 色五月婷婷久久| 天天免费日日夜夜夜夜| 亚洲热手机在线观看| 影音先锋自拍网| 五月在线| 婷婷综合色五月天| 可以直接看的av网站| 91色干| 99爱视频在线观看这里只有精品| 日韩久久色| 丁香五月六月激情| 九九热这里只有国产精品| 99碰碰视频| 久久97久久99久久综合欧美| 久久伊人五月天| 大香蕉丁香婷婷| 五月天婷综合| 五月婷婷激情| 亭亭五月丁香五月天激情| 婷婷五月天美女| 亚洲无aV在线中文字幕| 五月丁香综合中文| 青996青| 色婷婷呢狠禁久禁| 亚洲成人无码专区| 欧美婷婷丁香社区在线播放| 99热午夜精品| 综合激情四射一theav| 九九成人| 91碰免费视频| 欧美日韩精品一区二区三区钱| 人妻丰满精品一区二区A片| 大香蕉综合| 日韩啊啊啊| 激情婷婷五月色| 婷婷五月激情网站| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 婷婷五月天大香蕉| 性爱七区| 激情综合无码| 色色色色色色色综合| 99人人操| 99热这里| 激情六月天婷婷| 99热这里只有精品9| 天天摸天天高潮天天爽| 久久这里都是精品| 夜夜资源站| 久久伦乱| 综合色99| www.丁香黄色五月天人与| 天天干一干| 日韩成人综合网| 婷婷开心五月| www.五月婷婷久久.com| 国产超碰在线| 婷婷五月激情在线| 五月丁香婷婷综合视频| 99噜噜| 另类 在线| 色色五月综合| 99热免费精品热久久66| 五月丁香青草综合啪啪| 蜘蛛女侠2003满天星免费观看| 久久思思精品| 操99| 亚洲综合五月天婷婷| 婷婷五月丁香激情| 久久资源网五月婷| 岛国av电影网站| 深爱五月网| 99在线免费视频| 丁香婷婷五月天激情四射| 久久99久久久久久| 大香蕉在线99热| 玖玖综合色区在线观看| 亚洲激情四射| 九九九九这里只有精品| 丁香五月在线播放| 欧美日韩日韩成人| 五月婷婷色男女| 色久免费| 色色热99| 欧美色婷婷| 欧美在线97| 激情婷婷丁香| 九色无码| 99在线国| 成人日韩欧美| www网站在线观看| 狼人婷婷综合| 久热A| 五月婷婷AV| 五月婷婷之综合激情| 国产真实乱了老女人视频| 色欲AVV| WWW免费视频碰碰碰碰| 五月天激情综合网俺也去| 婷婷五月丁香高清无码| 99ri在线视频| 97亚洲视频在线| 亚洲色综久久五月| 99热这里只有精品18| 婷婷的99视频网站| 99热大| 99视频精品视频| 亚洲男女激情| 丁香五月桃花在线激情综合| 五月丁香va| 天天做好综合色| 五月天婷婷久久视频| 五月天婷婷无码| 亚洲乱码在线观看| 中文久久婷婷| a久久免费视频| www.超碰| 日韩成人电影AV| 色婷婷基地| 99视频只有精品| 日韩无码人妻一区二区| 亚洲婷婷免费| 久久久九九九 99| 99re思思在线视频| 九九性视频| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 91婷婷丁香五月亚洲| 欧美久热| 夜夜干夜夜操| 久久婷婷五月综合色丁香| 狠狠xx| www九九热| 午夜九九九九九九九九九九九九九| 激情伍月 欧美| 97人人超| 丁香六月婷婷久久综合| 婷婷久久综合| 婷婷五月天AV激情| 逼特逼在线免费播放| 亚洲99综合| 亚州欧美国产久精国产99综合视频| 69色婷婷| 超碰亚洲天堂| 成人va在线播放| 99男人的天堂| 熟女网站久久| 精品久久99| 九色视频91疯狂| 色丁香五月| 亚洲人成人五月天| 久久 中文 日本| 开心婷婷五月天激情网| 五月丁香六月婷婷久久肏| 夜夜爱网站| 熟妇国产| 亚洲熟女色| 99久超碰| 丁香五月婷久久| 香蕉久久国产av一区二区| 99亚洲视频| 啪啪五月综合| 婷婷金品综合视频| 五月丁香天天| 丁香五月97视频| 五月丁香黄色视频| 97操碰碰无码视频| 做爰丰满少妇1313| 亚洲激情婷婷| 天天性视频| 国产免费一区二区在线A片视频| 五月丁香婷婷福利| 操精品9| 色五月激情婷婷| 婷婷五月丁香香蕉| 丁香五月在线观看| 人人操人人爱丁香五月| 亚州操操| 女人高潮内射99精品| 五月婷婷久久内射| 啪啪 综合网| 五月天综合网| 天天爽天天干| 亚洲美女婷婷五月天| 拍真实国产伦偷精品| 婷婷五月天首页| 特黄三级又爽又粗又大| 婷婷久久综合| 日日日日日| 日本精品99| 91碰碰碰| 强伦轩人妻一区二区电影| 九九成人精品免费视频| 婷婷黄色网| 色婷婷五月天久久| 六月米奇色综合| www.九九婷婷| 青青草视频免费观看| 日日干日日s| 一起操 91N.com| 99性视频| 丁香六月婷婷一区二区三区| 色天天狠狠干| 五月婷婷黄色| 婷婷丁香久久网| 久久网日本| 丁香伊人综合| 综合色五月天| 十区AV| www九九热| 婷婷色五月色| WWW.开心五月天.COM| 午夜丁香综合婷婷| 亚洲无码AV片| 综合福利网| 日韩人妻无码精品| 色五月天在线观看| 91人妻视频| 九色视频91| 久久综合66| 天天影视天天爽天天草| 26uuu欧美激情另类| 99热国品免费| 综合色情网| 在线超碰免费| 五月激情综合网婷婷| 9l视频自拍9l视频自拍九色学生| 六月婷婷久久大全| 久久久久99精品成人片| 久久奄也去色色网站| 97色在线观看视频| 99WWW免费视频| 国产精品电影| 97中文在线| 无人精品在线视频| 99视频在线精品免费观看2| 美女五月天婷婷| 97久人人| 97操碰视频| 色婷婷香蕉丁丁网| 99欧美三级视频| 中国女人内射6XXXXX| 99综合视频| 特级片神马电影| 五月丁综合在线观看| 亚洲免费观看高清完整版AV线| 色综合激情图区| 久久婷色| 极品精品一区二区三区在线| 亚洲va成人va成人va在线观看| 色综合九九色综合88| 婷婷十月激情综合网| 9这里只有精品| 婷丁香五月天| 婷婷丁香五月亚洲免费| 欧美成人网99网| 日韩色情亚洲五月天婷婷| 久热这里只有精品在线观看| 激情色色| 天天上天天爽| 99亚洲色| 激情图片婷婷丁香五月| 久色激情| 色优久久| 亚洲国产精品二二三三区| 99操逼| 婷婷五月天影院| 九九亚洲| 丁香婷婷六月| 亚洲无码成人| 深爱激情九九五月天 | 婷婷色播六月无码| 激情六月婷| 婷婷五月天堂一本在线| 激情綜合網址| 色色热| 久久婷婷七月丁香| 五月天三级久久| 久久婷婷丁香| 五月丁香五月激情综合色综合| WWW、日本色丁香、co m| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 丁香婷婷91在线观看视频| 欧美色激情四射| 蒲京久久无码视频| 91精品婷婷国产综合久久| 婷婷狠狠97| 玖玖婷婷视频| 丁香色情五月天| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 日本欧美国产| 国产精品扒开腿做爽爽爽A片唱戏| 曰韩五月丁香色婷婷无码| www网站在线观看| 久久99久久99精品免观看粉嫩| 丁香五月婷婷少妇| 久久精品夜色噜噜亚洲a∨| 久久这里有精品| 狠狠色婷婷综合开心影视| 四色永久成人网站| 俺也去在线视频 | 丁香色婷婷| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 五月丁香婷婷激情在线| 91久久精品无码一区二区三区| 能直接看的av网站| 九九艹女| 色色成人網| 欧美VA在线| 狼人久草| 九九99男女视频在线观看| 色五月婷婷五月天| 草草影院爱爱| 色五月婷婷很很操| 婷婷五月五月丁香| 26UUU亚洲欧美| 六月婷婷激情| 超碰无码318604| 先锋资源996| 夜夜骑夜夜撸| 丁香六月色婷婷| 丁香五月天的网址。| 色偷偷五月天| AV伊人青草丁香六月| 激情文学五月丁香六月婷婷| www.99精品日操伊人乱碰在线| 婷婷丁香社区网| 国产精品美女| 丁香五月天堂网AV| 婷婷噜噜| 婷婷六月天| 思思久久96热在精品国产,| 99在线精品免费视频| 成人 AV播放| 99re这里只有精品首页| 香蕉AV777XXX色综合一区| 日本99热| 婷婷丁香社区网| 亚洲婷婷久久综合| 超级碰碰碰碰视频| 丁香五月综合激情性爱| 色色狼人综合| 久久久18| 青草性爱视频| 久久婷婷原创视频| 色色色色综合| 国产.亚洲.欧洲视频在线| 五月婷婷免费在线观看视频| 一区二区三区四区牛| 亚洲 五月 婷婷 成人| 成人无码精品1区2区3区免费看| 天天搽天天射| 亚洲AV在线免费看| 五月天另类小说| 97久久超视频| 五月天大香蕉| 99这里只有精品8| 120分钟婬片免费看| 五月婷婷与六月丁香图片激情| 99热网站| 天天舔天天插天天干| 亚洲欧洲中文日韩久久AV乱码| 五月丁香六月婷精品视频| CHINESE熟女老女人HD视频| 综合丁香婷婷五月天| 天天干天天做| 亚洲、热| 大香蕉久热| 97碰碰视频在线观看| 色综合婷婷| 99久久综合网| 日日夜夜久| 玖玖午夜视频| 欧美大肥婆大肥BBBBB| 手机AVAV天堂看网| 五月天 婷 欧美亚洲| 激情丁香六月| 69超碰在线| 26uuu亚洲欧美日本| 91大屁股精品| 日韩中文字幕| 欧美激情五月天| 丁香六月啪啪| 久久婷婷艹| 极品另类| 婷婷六月插屄激情| 成人av观看| 99色综合| 色爱综合网| eeuus五月婷| 色婷婷精品视频在线播放| 天天操比比| 久久色情| 婷婷狠狠狠爱| BBWCUCKOLD精品熟妇| 亚洲色情网站| 色9色| 97操碰人人| 色色色色热| 五月天成人在线播放丁香| 98永久精品| www.激情| 婷婷涩五月| 99热这里有精品24| 久久伊人大香蕉| 婷婷五月激情欧美大胆视频| 久婷婷| 亚洲婷婷五月天激情综合| 人人干女人| 成人国产欧美大片一区| www.91久久| 丁香五月婷婷色| 国产67194| 色婷婷亚洲综合av| 日产精品一线二线三线芒果| 色播五月婷婷| 激情综合九月| 亚洲成人五月天| 日日操夜夜爽白洁| 成人丁香五月| 一起草无码| 四色五月婷婷| 在线中文AV| 尔尔AV一区| 天天干一干| 快色t v在线入口| 亚洲综合色网站| 在线视频另类| 色噜噜狠狠色综合网| 丁香99| 丰满女老板BD高清A片| 97碰在线| 激情六月综合| 丁香五月性爱| www九九热| 噜一噜在线| 五月天六月婷| 国产精品香蕉| 婷婷丁香五月亚洲免费| 丁香五月在线观看完整版| 99热日韩这里只有精品| 天天爽夜夜爽夜夜爽精品| 99亚洲精美视频在线观看| 99久久婷婷综合| 六月婷婷色色网| 亚洲日韩乱码一区二区三区四区| 偷偷与邻居做爰完整视频| 色五月综合激情| 丁香五月天.com| 成人丁香| 色色丁香婷婷| 五月婷av| 国产伦亲子伦亲子视频观看| 青草青草视频2免费观看| www久久99| 婷婷五月激情中文字幕| 涩五月婷婷| 日韩啪啪网| 狠狠色噜噜狠狠狠狠综合| 五月婷婷六月丁香综合在线| 九九热视频在线观看| 丁香五月社区| 久久久久久久久久久久久9| 国产人妻777人伦精品HD| 五月婷婷丁香| 97超喷视频在线观看| 超级碰碰一区| AV色婷婷| 激情com| 五月丁香好婷婷A片网| 婷婷六月插屄激情| 五月婷婷69| 亚洲婷婷丁香| www.99视频| 亚洲亚洲人成综合网络| 啪啪色激情五月天| 丁香综合网| 99热思思在线观看| 26uuu亚洲精品国产| 五月丁香成人视频| 丁香五月婷婷五月| 亚洲日比视频| 天天噜日日噜综合无码| 婷婷五月天深爱| 99热亚洲精品66| 少妇人妻人伦A片| 日日天天干| 日本少妇裸体做爰高潮片| 九九精品丁香花| 91精品久久久久久久久| 婷婷五月 丁香六月| 婷婷五月伦理网站| 久久视频这里有精品99| 婷婷桃色网| 六月婷婷av| 婷婷六月天精品| 五月天婷婷社区| 伊人婷婷五月天| 婷婷综合久久综合| 噜噜噜噜婷婷五月天| www久热com| 激情五月综合| 久久香视频| 婷婷五月天受日本法律保护| 色婷婷久久综合中文久久一本| 东京热免费视频| 日韩中出视频| 午夜理论片最新午夜理论剧 | 这里只有精品免费视频在线观看| 激情五月天电影| 色色色色色九九九九九| 色色色色色级无码| 欧美精品啪啪| 国产亚洲成人综合| 五月天婷婷色播综合在线| 免费日本aⅴ中文字幕| 色开心五月丁香| 快乐激情五月色婷婷| 婷婷在线免费| 色99视频| 我爱大香蕉| 五月天婷婷激情在线色图| 激情久久久| 激情99热| 这里有精品| 五月婷婷香蕉视频| 五月天另类综合网| 色五月激情五月开心五月| 久婷首页| 丁香五月天色婷婷| 五月刺激丁香月综合| 成人色站,在线视频,看片-SS1AV| 日本欧美在线| 99riAV国产精品视频| 欧洲第一久色| 九九婷婷激情综合网| 丁香六月婷婷综合色| 操九色| 九月大香蕉| 五月婷婷啪啪网| 欧美韩国日本| 99re热| 俺去也婷婷| 亚洲av综合网| 午夜五月天| 婷婷色情网| 久久综合五月天| 激情五月天福利| 亚洲 五月 婷婷 成人| 丁香色婷婷色手机免费在线| 思思热在线视频99| 丁香五月婷婷综合啪啪| 五月天婷婷激情春色小说| 亚洲亚洲人成综合网络| 深爱网深爱综合网| 国产在线aaa片一区二区99| 丁香五月自拍| 欧美成人AAA片一区国产精品 | 国产欧美日韩性爱| 久久婷婷色| 天天综合色丁香| 五月天精品| 丁香六月色香蕉视频| 玖玖色综合| 伊人网欧美在线男人天堂五月丁香| 久热欧美| 婷婷五月天直播| 精品成人无码A片观看香草视频| 五月天a婷婷伊人| 艳妇野外情欲放荡HD| 日日干日日s| 国产人妻777人伦精品HD| 国产毛片欧美毛片久久久| 久久婷婷五月国产色综合激情| 亚洲五月婷| 四虎婷婷五月天| 亚洲欧洲另类图片| 激情六月色| 亚洲最大在线| 成人综合网站| 激情婷婷五月天日本系列| 久9精品视频在线| 99亚州综合精品成人网| 婷婷六月啪啪| 日日影院 | 久久视频这里99| 91chinese 在线| 五月天综合色| 狠狠色噜噜| 免费亚洲成人电影AV| 玖玖色综合| www。五月天。com| 欧美日韩成人在线网站| 五月婷婷六月丁香| 综合激情视频| 亚洲成色综合网站免费观看| 97久操| 色色婷婷五月天| 五月丁香婷婷六月天| 99免费青青蜜臀| 色99在线| 五月宗合激情网| 日韩综合网络男女香蕉a片| 亚洲精品V天堂中文字幕| 色狠狠综合入口| 九色婷婷| 另类图片五月天婷婷| 五月丁香天堂网| 五月婷婷婷婷婷| 99热老司机| 久久婷婷七月丁香| 色色色色色色色色网站| 天天摸色吧天天摸色吧| 可以免费看av网站| 91九色精品| 亚洲乱码日产精品BD| 五月天丁香成人社| 2w在线视频| 99综合| 婷婷六月综合激情| 六月丁香婷婷色综合| 99久精品视频| 色约约视频一区二区三区四区五区| 丁香六月情| 可以免费看的AV网站| 天天色一道本综合婷婷| 日本系列_4页_777FP| 羞羞嫩草视频| 中文字幕欧美日韩VA免费视频| 五月婷婷六月丁香玖玖玫瑰91| 亚洲mm色| 激情五月黄色小说| www.久久久久| w婷婷五月婷婷w| 碰碰碰碰碰99| 五月天开心色色网| 丁香六月综合激情| 另类在线| 另类激情五月| 久久婷婷五月天激情| 激情九九这里只有精品| 久久五月婷综合网| 天天插天天插天天日| 亚洲黄色精品| 久99热在线观看| 久久香视频| 九九热狼人| 无码激情AAAAA片-区区| 精品夜夜澡人妻无码AV| 色五月亚洲| 日韩1区2区| 丁香五月中文字幕| 亚洲综合色色| 色综合网址| 最新av在线观看| 97色天堂| 激情五月丁香五月| 91狠狠综合久久久久久| 婷婷久久网| 五月丁香成人网| 婷婷亚洲天堂| 成年人丁香五月| 91chinese在线| 这里只有精品2| 婷婷丁香五月综合| 久操婷婷| 国产偷人爽久久久久久老妇APP | 五月丁香婷婷中文| 无码色色色色色| 丁香 婷婷 激情 综合 五月| 天天干夜夜操A片| 99热日韩这里只有精品| 97日韩无套内| 婷婷丁香色女人| 91九九热| 五月丁香六月婷婷啪啪| 99热精品在线观看| 日日色五月天| 深爱激情网五月天| 性爱久久| 久久538| 成人综合网站| 丁香五月婷婷高清| 婷婷五月电影| 激情婷婷综合| 色婷婷色婷婷五月| av在线免费网站| 99热免| 欧美精品中文字幕亚洲专区| 大大香蕉综合在线| 日韩一级A片黄色| 激情丁香婷婷五月天| WWW.开心五月天.COM| 婷婷天天日婷婷| 亚洲综合色色| 日本视频久久| 激情五月丁香六月综合AVXXXX| 亚洲综合99| 六月丁香深深爱| 色五月AV| 狠狠干,狠狠操| 激情国产五月| 99综合免费视频| 综合五月天天天天天五月| 激情五月久久| av亚洲国产小电影| 天堂综合久| 蜜臀av无码久久久久久久久| 五月天六月婷婷| 日本色五月| 国产av第一专区| 久久精品视频99| 五月婷婷视频28| 日本三级日本三级99| 久久婷婷五月天大香蕉| 日本美女上人| 婷婷激情五月天激情| 国产精品美女| 亚洲色婷婷五月天| 久久婷婷色丁香| 婷婷激情在线| 九色激情| 五月激情开心婷婷| 久99久视频| 丁香婷婷综合色五月激情国产基地| 色色操| 丁香色婷婷| 九九热视频在线观看| 开心五月婷婷婷美女| 精品一区二区三区木瓜| 99久热这里只有精品| 99re在线免费视频| 久久婷婷色丁香| 婷婷五月天开心网| 日本在线视频播放91| 五月天俺去也| 丰满少妇猛烈A片免费看观看 | 国产精品99久久久久久久女警| 亚洲无码www| 另类综合国产| 亚洲精品字幕在线观看| 久久婷婷五月综合| 婷婷色色丁香五月天| 午夜在线成人网站免费观看| 婷婷深爱五月天在线| 97操操| 精品网站:999WWW| 婷婷99狠狠躁| 亚洲综合五月天婷婷| 成人精品一区二区三区四区五区| 超碰色色综合| 99啪啪网| www,色婷婷| 亚洲另类毛片| 婷婷五月丁香综合激情| 99久久婷婷国产综合亚洲| 天天综合五月| 午夜不卡久久精品无码免费| 热久久思思热思思| 婷婷五月天福利| 九九家庭影院| 亚洲激情在线| www.99热最新视频8| 香蕉婷婷| 婷婷丁香五月天在线视频| 免费亚洲婷婷| 日韩人妻无码一区二区| 五月丁香综合啪啪| 五月激激网w'w'w| 在线观看国产高清视频免费网站 | 成人国产网站在线免费看| 丁香五月视频在线观看| 国产精品人人做人人爽人人添| 伊人五月婷婷| 中文字幕免费高清电视剧| 桃色伊人在线| 乱乱av| 深爱五月婷| 吾爱AV导航| 色五月婷婷九月| 久久超级碰碰| 99亚州综合精品成人网| 国庆精品久久| 综合久久十三| 久久丁香五月婷| 玖玖婷婷婷丁香五月| 欧美三级欧美一级| 99re思思热在线视频| 亚洲人妻av伦理| 久久99热精品a片在线观看| 亚洲无码影片| 国产综合婷婷| 日本a片网址| 成人国产欧美大片一区| 99综合一区| 亚洲免费观看高清完整版AV线| 99九九热在线观看| 婷婷五月花| 99热99这里有免费的精品| 葵花AV在线| 超碰人人操人人干| 五月社区丁香| 午夜福利8055| 精品人妻一区二区三区四区不卡在| 久久99热这里只有精品23| 操逼五月婷婷| 九九热10| 婷婷激情综合网| 啪啪东京热| 女人天堂AV| 色婷婷五月天视频在线| 天天肏夜夜肏| 桃色五月婷婷| 影音先锋一区二区三区| 思思久久96热在精品国产,| 精品动漫 无码av| 九九综合久久| 婷婷六月视频| 五月婷婷免费在线| 欧美人人草草| 婷婷亚洲综合| 色色亚洲视频| 色五月丁香激情视频| www.久9| 色色色五月婷婷| 色播五月婷婷| 亚洲色情激情丁香五月| 中文字幕AV网址| 九九99九九精品免费 | 青草青草久热这里只有精品| 亚洲成人在线电影网站| 色欲久久综合| 九九热在线视频| 人妻在线中文字幕久久| 激情综合九月| 亚洲天堂九九九| 激情综合色| 亚洲无码11| 午夜色丁香| www。88热在线视频免费观看| 久久久久久久久久久44| 国产精产国品一二三在观看 | 99热99热在线观看| 丁香五月综合激情啪啪| 99精品久久久久久久久| 免费看欧美成人A片无码| 九热免费视频| 久久99激情丁香婷婷小说网| 丁香五月六月婷婷自拍| 91狠狠综合久久| 五月婷免费视频| 桃色成人网| 亚洲色综合| 黄色三级日本| 五月丁香久久| 日本色色色| 五月花亭亭| 色色综合日韩| 婷婷五月激情热播| 超碰人人射| 一起草无码| 密视AV综合在线| 91丨九色丨首页| 天天在线天天综合网色| 91丨九色丨43老版熟女| 婷婷五月大香蕉| 亚洲av成人电影在线观看| 思思干精品| 丰满少妇乱A片无码| 99这里有精品视频| 五月天激情四射| 玖玖资源在线视频| 丁香五月婷婷啪啪| 成人午夜无码视频| 亚洲中文字幕AV| 啪啪激情综合| 中文字幕在线播放视频| 丁香色五月 97干| 五月婷婷激情| 另类图片激情五月| 久热黄色| 五月色亚洲| 99热这里有精品| 天天天干夜夜夜操| 丁香六月婷婷| 色优久久| 丰满少妇猛烈A片免费看观看| 熟妇内谢69XXXXXA片| 8090在线影视少妇| 久久色大香蕉| 7777久久亚洲中文字幕| 亭亭丁香97| 激情丁香久久久久久| 婷婷中文字幕网| 超碰在线国产9| 亚洲视频二区| 五月份婷婷| 热久久99视频| 99热这里只有国产精品| 激情五月,婷婷五月,丁香五月| 五月婷视屏在线观看| 丁香五月激情五月| 日本色色图| 91日韩在线| 黄色热99| 日韩精品无码AV| 九月激情综合| 色热久资源| 热99视频| 五月天综合视频| 日本在线视频www色| 婷婷五月影院| 九九综合影音先锋| 99九九中文字幕视频| 婷婷色导航| 襙逼网| 天天弄天天操| 激情深爱五月天| 婷婷在线网| 97电影99热| 五月丁香日本片| 天天干天天爽天天操| 97色操| www.色婷婷| 超碰免费电影| 丁香五月婷婷啪啪| 99精品7| 午夜爱爱网站| 国产亚洲精品久久久久苍井松 | 色香蕉精品五夜婷| 丁香婷婷91在线观看视频| 久久xx| 日本三级99人妇网站| 久久激情五月婷婷| 五月婷丁香久久久| 99啪99| 午夜无码熟熟妇丰满人妻| 超碰99资源站| 最新亚洲色色网| 久久久婷婷五月亚洲97号色| 成人精品一区日本无码网| 激情啪啪五月天| 99久久国产宗和精品1上映| 婷婷五月天电影网| 538在线精品| 欧美综合五月丁香六月婷| 五月婷婷黄色视频| 丁香五月香蕉| 婷婷5月久久综合网站| AA丁香综合激情| 五月激情六月宗合| 成人精品视频99在线观看免费| 久久九九精彩| 激情综合网亚洲色图| 激情色色| 超碰9在| 五月丁香六月婷婷a v| 丁香花色色网| 五月情涩综合婷婷| wwwxxx五月婷婷小说| 亚洲欧美婷婷五月色综合| 31色区视频免费看| 婷婷在线五月天观看| 五月丁香 啪啪| 97自拍视频网| 99热这里精| 色五月播五月| 亚洲一区国产传媒| 色狠久| 五月色情| AV天堂淫乩| 99热久| 婷婷五月精品中文字幕| 天天摸色吧天天摸色吧| 超碰成人黄色网| ...婷婷国产成人亚洲日韩| 五月婷亚洲精品AV天堂| 五月天停婷基地| 婷婷瑟瑟五月天| 色色五月婷婷网| 色婷婷六月激情| 九九热精品视频在线观看| 国产 亚洲 在线| 国产精品日日躁夜夜躁| 97精品综合久久内射| 国产资源91在线| 丁香五月-激情综合| 婷婷五月天激情偷拍| 婷婷九月色| www.粉嫩av.com| 亚洲免费看片| 91碰| 99久久网站| 综合久久影院| 26.uuu丁香五月婷婷| 丁香五月综合无码趴趴| 色五月天成人| 182TV大香蕉| 久久WW| 自拍偷窥99热| 婷婷色婷婷| 五月激情丁香五月| 狠狠色成人影片| 久月丁香爱婷婷综合| 伊人色综合网| 五月丁香六月婷婷综合免| 色婷婷丁香五月| 亚洲第精品| 超碰天堂网| 婷婷五月天中文字幕| 婷婷五月天毛片| 亚洲婷婷丁香| 成人视频一区| 久久久com| 色婷婷深爱五月| 99色在线观看视频者| 色99热| 天天干,天天操,天天射| 情色五月天网站| 婷婷丁香五月亚洲欧美| 色婷婷在线视频| 五月天激情综合10p| 91九九热| 看全色黄大色大片| 五月6香色婷婷视频| 99r久久这里只有精品| 国产XXXX搡XXXXX搡麻豆| 婷婷五月六月丁香综合| 激情国产综合| 五月天社区| 婷婷深爱色五月| 五月婷婷丁香综合,亚洲天堂| 人人摸人人| 开心婷婷中文字慕| 日本不卡一区二区三区| 色色色色色网站| 激情综合国产| 激情综合久久| 色丁香六月| 婷婷伊人综合中文字幕| 国产精自产拍久久久久久蜜| 开心五月天激情网站| 久久婷婷五月天激情四射| 桃色五月天| 丁香婷婷五月基地| 久久婷婷网| 荫道BBWBBB高潮潮喷| 久久a热| 日本激情ⅩXX免费视频| 一片AV片免费播放| 综合色99| www.色擼擼.com| 大香蕉精品视频| 琪琪色五月婷婷老师| 久久色9| 色婷婷丁香五月高清在线| 丁香六月成人网| www五月天激情com| 五月婷婷深深爱| 7EzOBIhNq85TO| 91色综合网| 激情都市五月天| 婷婷激情性爱| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 99激情网| 99思思热只有在这里看| 国产精品电影| 欧美成综合在线观看| 久热久| 婷婷五月在线视频| 日批在线看| 精品久久99| 无码一级片| 亚洲精品V天堂中文字幕| 婷婷激情人妻| 激情婷婷综合五月少妇| 五月六月丁香激情视频| 久久久久98| 久操乱| 丁香五月成人| 九九热自拍| 俺去也五月天婷婷| 日日干五月天婷婷| 五月丁香六月激情欧美综合| 五月天丁香六月综合| 久久久久久久久久久44| 激情98色婷婷五| 思思99热| 99re免费精品视频| 五月丁香六月欧美综合网站| w婷婷五月婷婷w| 婷婷综合在线| 色三级色三级| 丁香五月123| 99热黄| 精品亚洲国产成AV人片传媒| 色婷婷综合视频| 欧美内射AA| 色婷婷五月在线| 天天色天天日天天舔| 天天插天天插天天插| 天天拍久久| 欧美在线骚货| 婷婷香香五月| 亚洲另类电影| 性爱网五月天| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 天天干天天色综合| 五月婷婷丁香色播网| 色综合五月婷婷狠狠干| 欧美99热| 丁香六月亚洲| 天天操夜夜夜夜爽| 9er热在线精品视频| 成人视屏在线观看| 五月婷婷啪啪啪| 天天射天天干天插色综合| 大香蕉狼人久久| 九九 激情 网| 欧美色宗和激情| 日本色天堂| 99自拍视频网站| 中文字幕在线不卡| 中文字幕在线日亚州9| 97色婷| 色色色色热热| 六月激情婷婷色| 婷婷丁香五月天在线视频| 亚洲激情电影五月天色婷婷丁香一起草 | 俺也高清无码高清视频| 婷婷色丁香六月| 天天久综合| 另类激情首页| 97人人操| 人人干人人看| 色婷五月天| 色哟呦av| AV六月丁香| 射区导航| 天天色月| 五月丁六月香av| 99综合免费视频| 五月丁香婷婷爱| 五月丁香久久综合| 亚洲九九夜夜| 超碰成人黄色网| 区啪精品| 五月婷婷激情性爱| 人人澡天天色天天做| 99热骚货| 五月激情小说| 能看的av网站| 综合色、色综合| 玖玖综合玖玖| 无码人妻电影| 人人人人人人人人人草| 狠狠色噜噜色狠狠狠综合久久成人波 | 色色色com| 色婷婷激情五月天丁香| 国产色99| www.xtbsty.cn.com蜜乳AV| 丁香五月激情视频在线| 婷婷五月激情丁香| 999热这里只有精品| 九九丁香社区欧美激情| 丁香婷婷性久久| 丁香五月婷婷久久久| 丁香五月激情综合啪啪| 丁香五月天黄色片| 午夜天堂一区人妻| 超碰人人99| 十月丁香婷婷| 色噜噜狠噜噜视频| 99操视频| 日hao1区| 天天爽,天天操。| 欧美狠狠色| 丁香六月婷婷久久综合| 久久婷婷的综合色丁香五月| 美女天天久久| 婷婷狠狠操| 嫩草AV久久伊人妇女超级A| 毛v一区二区视频| 都市激情蜜桃婷婷五月天| 亚洲激情婷婷| 嫩草AV久久伊人妇女超级A| 丁香九月激情久久| 97激情五月天| 日本99在线视频| 97爱艹婷婷开心丁香激情综合| 丁香五月综合激情啪啪| 丁香五月第四色88| 青青草成人网| 成人在线视频男人的天堂4399| 99在线资源视频| 婷婷亚洲综合| 人人摸人人搞| 丁香五月电影| 色色爽爽天天| 丁香五月六月婷婷殴美综合| 日韩人妻无码专区| 91人碰| 99热10在线高清播放| 永久的网站AAAA| 99噜噜| 婷综合六月| a v色婷婷| 99色性爰网络| 久久婷婷五月综合成人d啪| 丁香社区婷婷五月| 99色视频| 色色激情| 日本高清久| 亚洲另类毛片| 婷婷五月天激情综合网| 欧美成人va| 亚洲成人AV在线观看| 久久五月天婷婷| 人人操超碰| 白天AV月月| 天天日天天舔| 激情五月天色| 99热伊人| 久草五月婷婷| 激情综合色婷婷啪啪六月天| 91碰操| 五月丁香婷婷俺| 操碰色一区就去操| 激情的五月| 五月婷在线| 五月天国产成人| 五月婷婷影| 狠狠色综合网| 色婷久久| 免费亚洲婷婷中文字幕| 台湾无码A片一区二区| 婷婷欧美激情| 激情五月色婷婷| 色99无码| 五月丁香五月综合欧美| 9在线9在线婷婷在线国产| 久久视频在线| 五月丁香天堂| 久久婷婷成人综合色怡春院| 久9草在线观看视频| 色五开心五月五月深深爱| 五月天小说激情| 欧美激情综合五月色丁香| 97人人操com| 婷婷在线激情| 九热免费视频| 丁香五月性爱| 激情综合网之激情五月| 国产古装妇女野外A片|