99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

Hive數(shù)倉SQL遷移Spark SQL:方言差異、UDF改造與數(shù)據(jù)驗(yàn)證實(shí)戰(zhàn)梳理

Hive數(shù)倉SQL遷移Spark SQL:方言差異、UDF改造與數(shù)據(jù)驗(yàn)證實(shí)戰(zhàn)梳理 從接手的那天起我就知道這活兒沒有表面看起來那么簡單。團(tuán)隊(duì)反饋過來的需求很簡短——把現(xiàn)有的Hive數(shù)倉SQL遷移到Spark SQL。我當(dāng)時(shí)的第一反應(yīng)是這不就是把SQL語句改一改、換個(gè)引擎跑嗎等真正干起來才發(fā)現(xiàn)整個(gè)spark-sql migration最耗時(shí)的地方根本不在翻譯SQL而在于兩套引擎在語義、元數(shù)據(jù)、UDF和運(yùn)行時(shí)行為上的隱性差異。這篇文章就把我在這個(gè)遷移項(xiàng)目里的完整經(jīng)歷、踩坑過程和沉淀下來的檢查清單一次說清楚。無論你是正準(zhǔn)備把Hive作業(yè)遷到Spark SQL還是想把老的Spark 2.x作業(yè)升級(jí)到Spark 3.x又或者是把其他引擎的SQL方言整理成Spark SQL規(guī)范都應(yīng)該能從這里面找到可以直接抄作業(yè)的部分。1. 動(dòng)手之前先分清你要做的是哪一種Spark SQL遷移很多人一聽到migration就默認(rèn)是在做引擎替換這其實(shí)是個(gè)誤區(qū)。我在項(xiàng)目啟動(dòng)前做的第一件事就是把遷移這件事拆成了三個(gè)完全不同的類型因?yàn)樗鼈兊墓ぷ髁俊L(fēng)險(xiǎn)點(diǎn)和驗(yàn)收方式完全不一樣。1.1 引擎替換型Hive作業(yè)遷到Spark SQL這是最典型的一種也就是把原本跑在Hive on MR或Hive on Tez上的SQL作業(yè)整體切換到Spark SQL引擎上執(zhí)行。這種遷移的核心矛盾在于Hive和Spark SQL雖然都支持絕大部分HiveQL語法但Spark SQL的Catalyst優(yōu)化器有自己的執(zhí)行語義尤其在子查詢、隱式類型轉(zhuǎn)換、NULL處理和窗口函數(shù)邊界上兩邊的行為差異非常明顯。我在項(xiàng)目里遇到的一個(gè)典型問題是Hive里允許把String類型字段直接和BigInt類型做等值JOIN引擎會(huì)自動(dòng)做寬松的隱式轉(zhuǎn)換跑起來一點(diǎn)問題沒有。但同樣的SQL切到Spark SQL如果不開兼容開關(guān)直接拋AnalysisException提示cannot resolve或類型不匹配。這類問題在存量幾百條SQL的數(shù)據(jù)倉庫里幾乎每十條就能碰上一次。1.2 版本升級(jí)型Spark 2.x作業(yè)遷到Spark 3.x第二種類型是Spark版本大版本升級(jí)。很多團(tuán)隊(duì)之前用Spark 2.4跑得好好的因?yàn)樾鹿δ?、安全補(bǔ)丁或云平臺(tái)服務(wù)期限的原因必須升到Spark 3.x。這類遷移表面上不動(dòng)SQL業(yè)務(wù)邏輯但Spark 3.0開始默認(rèn)啟用了ANSI模式的部分規(guī)則還把很多老參數(shù)標(biāo)記為deprecated導(dǎo)致原來能跑的生產(chǎn)作業(yè)突然在測(cè)試環(huán)境翻車。最典型的例子是spark.sql.legacy.allowCreatingManagedTableUsingNonemptyLocation這類遺留行為開關(guān)以及spark.sql.shuffle.partitions默認(rèn)值變化對(duì)性能的影響。這不是改SQL的問題而是調(diào)參和語義對(duì)齊的問題。1.3 方言轉(zhuǎn)換型把Presto、Flink SQL等方言整理為Spark SQL規(guī)范第三種類型相對(duì)少見但也不是沒有——把Presto/Trino或者Flink SQL的查詢邏輯統(tǒng)一改寫成Spark SQL規(guī)范。這種遷移的難點(diǎn)是函數(shù)名和語義映射比如Presto的approx_distinct到Spark SQL是approx_count_distinctFlink的HOP窗口在Spark SQL里要用window函數(shù)或flink風(fēng)格改寫稍不注意就會(huì)算出完全錯(cuò)誤的結(jié)果。MIGRATION COCKPIT操作手冊(cè)里有一句話我很認(rèn)同數(shù)據(jù)遷移的核心不是搬而是驗(yàn)證搬過去之后的行為一致。放在這里也一樣——搞清楚你是哪一種遷移才能決定后面每一步的精力分配。我在項(xiàng)目啟動(dòng)前先做了一輪資產(chǎn)盤點(diǎn)把待遷移SQL按來源、涉及引擎特性、是否含UDF做了分類這一步幫我在后面省下大量排查時(shí)間。2. 方言差異清單同一條SQL在兩個(gè)引擎里的行為可能完全不同如果說遷移項(xiàng)目的前半程是能跑通后半程就是跑得對(duì)。很多SQL在Hive里跑得很歡到Spark SQL里要么直接報(bào)錯(cuò)要么悄無聲息地給你一個(gè)不同的結(jié)果。這里我把自己實(shí)際遇到過且概率較高的方言差異點(diǎn)整理成了一份清單。2.1 ANSI模式開關(guān)一切差異的源頭Spark SQL從3.0開始引入spark.sql.ansi.enabled開啟后對(duì)類型轉(zhuǎn)換、除零、非法日期等行為的約束非常嚴(yán)格。Hive則默認(rèn)走盡力轉(zhuǎn)換的路線字符串轉(zhuǎn)數(shù)字轉(zhuǎn)不了就返回NULL而ANSI模式下直接拋異常。舉個(gè)例子在Hive里執(zhí)行SELECT CAST(abc AS INT)結(jié)果是NULL作業(yè)照常跑。同一個(gè)語句放到Spark SQL的ANSI模式下直接拋NumberFormatException。這會(huì)讓很多原本能用的臟數(shù)據(jù)邏輯突然變成作業(yè)失敗。我在遷移項(xiàng)目里的處理方案是對(duì)于存量Hive作業(yè)先用spark.sql.ansi.enabledfalse跑通再逐批開啟ANSI并修正SQL。這么做是為了把語法層遷移和數(shù)據(jù)質(zhì)量治理兩個(gè)目標(biāo)分開推進(jìn)避免混在一起后問題無法定位。2.2 常用函數(shù)行為差異對(duì)照表下面是我們?cè)谶w移過程中踩過且修復(fù)過的具體函數(shù)差異建議直接保存下來當(dāng)成排查手冊(cè)用場景Hive行為Spark SQL行為遷移建議字符串轉(zhuǎn)數(shù)字失敗返回NULL不報(bào)錯(cuò)ANSI開啟時(shí)報(bào)錯(cuò)關(guān)閉時(shí)返回NULL先判斷臟數(shù)據(jù)比例再用TRY_CAST做安全轉(zhuǎn)換datediff(end, start)返回INT天數(shù)返回INT天數(shù)但日期非法時(shí)行為不同統(tǒng)一先做日期合法性過濾substr與負(fù)索引負(fù)數(shù)索引從尾部計(jì)數(shù)負(fù)數(shù)索引返回空串改寫邏輯或統(tǒng)一約定參數(shù)非負(fù)count(distinct col)精確去重計(jì)數(shù)精確去重計(jì)數(shù)但大key傾斜風(fēng)險(xiǎn)更高數(shù)據(jù)量大時(shí)改用approx_count_distinctNULL排序升序時(shí)NULL默認(rèn)排在最前升序時(shí)NULL默認(rèn)排在最后可用NULLS FIRST/LAST控制顯式指定NULLS排序方向map與struct構(gòu)造語法較寬松對(duì)類型一致性要求更嚴(yán)格提前統(tǒng)一元素類型LATERAL VIEW explode空數(shù)組不輸出行空數(shù)組不輸出行但explode_outer才保留原行明確是否需要保留空行上面每一個(gè)差異都在我這次遷移中至少觸發(fā)過一次線上問題。特別是NULL排序這個(gè)點(diǎn)明明同一個(gè)結(jié)果集Hive和Spark排出來的前幾條記錄完全不同做數(shù)據(jù)驗(yàn)證時(shí)直接對(duì)不上賬。2.3 隱式類型轉(zhuǎn)換JOIN條件里的隱形殺手隱式類型轉(zhuǎn)換是遷移中最隱蔽的一類問題。在Hive里String和Int做等值JOIN時(shí)引擎會(huì)嘗試轉(zhuǎn)換通常在Hive里表現(xiàn)為把字符串先轉(zhuǎn)成數(shù)值。但Spark SQL在默認(rèn)情況下要求兩邊的數(shù)據(jù)類型匹配度高否則就走BroadcastNestedLoopJoin或者直接報(bào)錯(cuò)。我遇到過一個(gè)典型的生產(chǎn)故障兩張事實(shí)表用order_id關(guān)聯(lián)一張表的字段類型是INT另一張表在Hive建表時(shí)沒注意變成了STRING。Hive里跑了兩年都沒事遷移到Spark SQL后速度驟降排查發(fā)現(xiàn)是因?yàn)轭愋筒灰恢聦?dǎo)致JOIN沒法走SortMergeJoin而走了NestedLoop。修復(fù)方式也很簡單把STRING字段統(tǒng)一轉(zhuǎn)成INT或BIGINTJOIN性能馬上就恢復(fù)了。這里的經(jīng)驗(yàn)是遷移前先做一遍全量元數(shù)據(jù)對(duì)比把類型不一致的JOIN key單獨(dú)列出來不要等到作業(yè)上線了才通過性能問題反查。3. 表結(jié)構(gòu)與元數(shù)據(jù)遷移CREATE TABLE能跑通只是起點(diǎn)很多人在遷移時(shí)只盯著SQL語句忽略了一個(gè)更基礎(chǔ)的東西——目標(biāo)集群里的表定義是否和源集群完全一致。實(shí)際上表結(jié)構(gòu)層面的坑比SQL語法的坑更多而且一旦埋下后面所有作業(yè)都會(huì)受到影響。3.1 建表屬性檢查清單在Migrate your data類的操作手冊(cè)中元數(shù)據(jù)遷移永遠(yuǎn)排在第一步這里我把它落地成了一張可直接對(duì)照的表結(jié)構(gòu)差異檢查表存儲(chǔ)格式TextFile、SequenceFile、Parquet、ORC是否在目標(biāo)集群均已支持壓縮方式源表用Snappy、Zlib還是LZ4目標(biāo)集群的Codec是否配置齊全分區(qū)字段PARTITIONED BY的字段順序、類型是否完全一致分桶信息CLUSTERED BY和BUCKETS數(shù)量是否保留這直接影響Spark的bucket pruning表屬性tblproperties里的transient_lastDdlTime等參數(shù)是否需要保留字段注釋COMMENT信息是否遷移影響下游數(shù)據(jù)字典和數(shù)據(jù)治理行格式與SerDe自定義SerDe類在Spark SQL里是否可用我們項(xiàng)目的表都是從Hive Metastore遷移過來的理論上元數(shù)據(jù)應(yīng)該是同步的。但實(shí)際執(zhí)行時(shí)發(fā)現(xiàn)源集群里有一批用ROW FORMAT SERDE定義的表SerDe類只在老集群的Hive環(huán)境中注冊(cè)過Spark SQL執(zhí)行時(shí)無法加載導(dǎo)致一批作業(yè)全掛在表掃描階段。3.2 文件格式與壓縮Parquet和ORC不是隨便選的文件格式這塊我強(qiáng)烈建議在遷移前就統(tǒng)一好標(biāo)準(zhǔn)而不是沿用每個(gè)業(yè)務(wù)線各自的偏好。Parquet和ORC在Spark SQL里都支持得很好但要注意幾個(gè)細(xì)節(jié)Parquet的schema兼容性Spark SQL讀Parquet時(shí)如果文件里的字段類型和表定義不一致會(huì)走spark.sql.parquet.respectSummaryFiles和mergeSchema相關(guān)邏輯。如果老集群寫入了臟schema新集群可能需要開spark.sql.parquet.enableVectorizedReaderfalse才能正確讀取但這會(huì)犧牲性能。ORC的ACID支持如果源表是Hive ACID事務(wù)表尤其是帶UPDATE和DELETE的遷移到Spark SQL后要確認(rèn)版本。Spark 3.x支持讀取Hive ACID表但不支持所有的ACID寫入操作需要評(píng)估是否改寫寫入鏈路。壓縮算法的Codec名稱Hive里寫的是org.apache.hadoop.io.compress.SnappyCodecSpark SQL里經(jīng)常簡寫成snappy兩邊要能正確識(shí)別。如果Codec缺失作業(yè)不會(huì)報(bào)錯(cuò)但文件大小會(huì)異常膨脹。3.3 INSERT OVERWRITE的語義差異一個(gè)容易忽略的坑INSERT OVERWRITE在Hive和Spark SQL里的語義對(duì)分區(qū)表的處理不同。Hive的INSERT OVERWRITE默認(rèn)是覆蓋動(dòng)態(tài)分區(qū)對(duì)應(yīng)的分區(qū)目錄但Spark SQL在早期版本曾經(jīng)出現(xiàn)過覆蓋整張表或覆蓋非預(yù)期分區(qū)的行為。雖然Spark 3.x已經(jīng)默認(rèn)按分區(qū)覆蓋但如果你是從Spark 2.1或更早版本一路升級(jí)過來的一定要在測(cè)試環(huán)境驗(yàn)證一遍。我建議的統(tǒng)一規(guī)范是所有分區(qū)寫入都顯式指定靜態(tài)分區(qū)或者保證動(dòng)態(tài)分區(qū)的predicate足夠收斂不要依賴引擎默認(rèn)行為。這看起來保守但能在遷移期減少大量意外。4. UDF/UDAF遷移改造最容易拖慢進(jìn)度的隱蔽環(huán)節(jié)在Hive SQL向Spark SQL遷移的過程中最容易被低估的就是UDF和UDAF資產(chǎn)。很多團(tuán)隊(duì)的SQL看起來只是幾十個(gè)查詢但背地里掛了十幾個(gè)自定義函數(shù)有的還是用Hive的Java接口寫的。這些UDF在Spark SQL里能不能跑、性能如何直接決定整個(gè)遷移的排期。4.1 先盤點(diǎn)再動(dòng)手搞定UDF資產(chǎn)清單我接手項(xiàng)目時(shí)先做了一個(gè)UDF資產(chǎn)盤點(diǎn)按照以下維度建了一張表UDF名稱語言注冊(cè)方式邏輯復(fù)雜度能否用內(nèi)置函數(shù)替代遷移優(yōu)先級(jí)get_md5JavaHive永久函數(shù)低spark內(nèi)置md5可替代高parse_urlJavaHive永久函數(shù)低內(nèi)置parse_url可替代高json_extractPython臨時(shí)函數(shù)中建議改用get_json_object高geo_distanceJava永久UDF中無內(nèi)置替代中rank_by_groupScala永久UDAF高可用窗口函數(shù)改寫低這么一盤很多UDF其實(shí)是多余的。能用內(nèi)置函數(shù)替代的我建議一律用內(nèi)置函數(shù)因?yàn)閁DF在Spark SQL里不僅僅是寫法問題還涉及序列化、代碼生成和優(yōu)化器穿透性能差距很大。4.2 Hive UDF與Spark SQL的兼容調(diào)用Spark SQL天然支持加載Hive的UDF只需要在SQL里通過CREATE TEMPORARY FUNCTION或永久函數(shù)注冊(cè)即可。但要注意三點(diǎn)第一Jar包的依賴沖突。我們有一個(gè)Hive UDF依賴了舊版本的Guava和Jackson在Hive里沒事加載到Spark里直接和Spark自身依賴的版本沖突ClassNotFound和NoSuchMethodError滿天飛。這種問題排查周期很長強(qiáng)烈建議提前做依賴隔離測(cè)試。第二UDF的返回值類型聲明。有些Hive UDF用ObjectInspector實(shí)現(xiàn)返回值類型推斷在Spark SQL里可能會(huì)被識(shí)別為BinaryType而不是StringType導(dǎo)致結(jié)果集在展示和落盤時(shí)出現(xiàn)亂碼或者類型轉(zhuǎn)換異常。遇到這種情況需要在注冊(cè)函數(shù)時(shí)顯式指定返回類型。第三Python UDF的性能問題。Python UDF在Spark里每個(gè)分區(qū)的每行數(shù)據(jù)都要經(jīng)過Arrow序列化和反序列化數(shù)據(jù)量大時(shí)性能衰減非常明顯。我在項(xiàng)目里遇到一個(gè)Python UDF處理JSON字段源作業(yè)在Hive里跑15分鐘切到Spark后跑了將近兩個(gè)小時(shí)。后來把邏輯改寫為get_json_object和from_json內(nèi)置函數(shù)組合才把作業(yè)壓縮到10分鐘以內(nèi)。4.3 用SQL表達(dá)式替代UDF遷移之外的額外收益這里提供一個(gè)經(jīng)驗(yàn)思路遇到UDF先問自己三個(gè)問題——這個(gè)函數(shù)能不能用SQL表達(dá)式加內(nèi)置函數(shù)拼出來能不能用CASE WHEN解決能不能用窗口函數(shù)替代只有三個(gè)都回答不了才需要保留UDF。我用這種思路處理過一批自研字符串清洗函數(shù)它們?cè)驹贖ive里用Java實(shí)現(xiàn)邏輯是把一串文本里的手機(jī)號(hào)、郵箱、URL脫敏??雌饋砗軓?fù)雜但實(shí)際上用正則表達(dá)式regexp_replace配合幾個(gè)CASE WHEN就能實(shí)現(xiàn)不僅省去了UDF遷移的部署工作執(zhí)行速度還提升了4倍以上。5. 數(shù)據(jù)結(jié)果比對(duì)怎么確認(rèn)遷完之后的數(shù)是對(duì)的遷移到一半的時(shí)候業(yè)務(wù)方一定會(huì)問你一句你確定遷完之后的數(shù)據(jù)是對(duì)的嗎面對(duì)這種問題光拍胸脯沒有用得有一套數(shù)據(jù)驗(yàn)證的機(jī)制。我在這套機(jī)制上的投入幾乎和SQL改寫本身一樣多。5.1 三層校驗(yàn)法從粗到細(xì)逐步逼近我把數(shù)據(jù)比對(duì)設(shè)計(jì)成了三個(gè)層級(jí)從速度和置信度兩個(gè)維度做平衡第一層是行數(shù)與主鍵唯一性校驗(yàn)。最簡單也最可靠每個(gè)表跑一下COUNT(*)關(guān)鍵表再跑一下主鍵去重后的數(shù)量和源集群對(duì)比。如果連行數(shù)都對(duì)不上后面就不用比了。我們遷移的第一個(gè)月里有將近40%的表在這一層就被攔下來了原因包括分區(qū)目錄丟失、數(shù)據(jù)重復(fù)寫入和JOIN類型變化導(dǎo)致的行數(shù)膨脹。第二層是關(guān)鍵聚合指標(biāo)校驗(yàn)。對(duì)每個(gè)業(yè)務(wù)表抽取一組核心指標(biāo)比如金額求和、訂單數(shù)COUNT、用戶數(shù)COUNT(DISTINCT)在源集群和目標(biāo)集群分別執(zhí)行對(duì)比結(jié)果。這一層能發(fā)現(xiàn)大部分明細(xì)數(shù)據(jù)錯(cuò)亂的問題。需要注意COUNT(DISTINCT)在超大寬表上的執(zhí)行效率不高可以采樣后用approx_count_distinct對(duì)比精度完全夠用。第三層是抽樣明細(xì)比對(duì)。針對(duì)數(shù)據(jù)量特別大且不允許誤差的表我采用分層抽樣——按業(yè)務(wù)日期各抽一天的完整全量數(shù)據(jù)做全字段比對(duì)。比對(duì)方法是通過hash函數(shù)將每行序列化成指紋然后做集合差集。這一層的成本最高所以一般只應(yīng)用于核心交易表和用戶主數(shù)據(jù)表不會(huì)對(duì)全部表做。5.2 空值與邊界值數(shù)據(jù)比對(duì)中最容易忽略的部分?jǐn)?shù)據(jù)比對(duì)結(jié)果不一致很多時(shí)候不是真的一致性問題而是空值語義差異和邊界值格式化差異。舉個(gè)例子Hive里的空串和NULL是兩種不同的值但在下游分析時(shí)經(jīng)常被當(dāng)成等價(jià)處理。而Spark SQL在讀取某些字段時(shí)如果文件里實(shí)際是空串而表定義允許NULL部分寫入鏈路會(huì)把這個(gè)空串自動(dòng)轉(zhuǎn)成NULL。對(duì)比結(jié)果一跑差異值全來自這類字段。另外Decimal類型也有類似問題——源表和目標(biāo)表如果精度定義不一樣一個(gè)是DECIMAL(10,2)一個(gè)是DECIMAL(12,4)同一個(gè)數(shù)值在兩張表里Hash出來的指紋就不一樣。所以抽樣比對(duì)前必須先把兩端表的字段類型統(tǒng)一成同一套口徑。5.3 數(shù)據(jù)驗(yàn)證過程的自動(dòng)化手工執(zhí)行SQL驗(yàn)證在三五十張表的時(shí)候還能靠人肉推進(jìn)到了幾百張表的量級(jí)就完全不可行了。我建議把驗(yàn)證流程做成一個(gè)定時(shí)腳本用Shell或者Python按表分批執(zhí)行上述三層校驗(yàn)結(jié)果輸出到差異報(bào)告里。實(shí)操上有幾個(gè)細(xì)節(jié)可以供參考源集群和目標(biāo)集群的數(shù)據(jù)庫連接串、調(diào)度參數(shù)統(tǒng)一放在配置文件里避免腳本里硬編碼每張表的校驗(yàn)SQL由表結(jié)構(gòu)元數(shù)據(jù)自動(dòng)生成比如從Metastore讀取主鍵字段后自動(dòng)拼COUNT DISTINCT語句校驗(yàn)結(jié)果落庫每次遷移批次后自動(dòng)生成一個(gè)diff報(bào)告發(fā)送給相關(guān)方這套機(jī)制不復(fù)雜但能讓數(shù)據(jù)對(duì)不對(duì)從主觀判斷變成客觀可查的流程。6. 上線后踩過的坑三類高頻運(yùn)行錯(cuò)誤實(shí)錄遷移SQL全部跑通、數(shù)據(jù)比對(duì)全部通過之后并不代表項(xiàng)目結(jié)束了。作業(yè)到了生產(chǎn)環(huán)境在真實(shí)數(shù)據(jù)量和并發(fā)條件下還要面對(duì)運(yùn)行時(shí)的那一關(guān)。我把這個(gè)階段遇到的高頻錯(cuò)誤整理成三類每一類都附上了排查思路方便你將來遇到時(shí)能快速定位。6.1 運(yùn)行錯(cuò)誤一JOIN字段類型不一致導(dǎo)致的性能跳水現(xiàn)象是某個(gè)匯總作業(yè)從原來跑20分鐘變成了跑3小時(shí)以上而且集群資源占用居高不下。一開始我以為是資源競爭后來看Spark UI發(fā)現(xiàn)執(zhí)行計(jì)劃里出現(xiàn)了BroadcastNestedLoopJoin而正常的等值JOIN應(yīng)該走SortMergeJoin。排查時(shí)我打開了兩張表的schema才發(fā)現(xiàn)一張表的user_id是INT另一張表是STRING。在Hive里引擎自動(dòng)做了轉(zhuǎn)換所以察覺不出來到了Spark SQL由于類型不完全匹配優(yōu)化器選用了兜底的NestedLoop方案。修復(fù)方式很簡單把JOIN條件的字段顯式轉(zhuǎn)換成同一類型再查看執(zhí)行計(jì)劃確認(rèn)已經(jīng)恢復(fù)成SortMergeJoin。這件事也讓我養(yǎng)成了一個(gè)習(xí)慣任何涉及JOIN和分區(qū)的字段遷移前必須做一輪類型一致性檢查。6.2 運(yùn)行錯(cuò)誤二Decimal精度溢出現(xiàn)象是某個(gè)金額計(jì)算作業(yè)在遷移后偶發(fā)報(bào)錯(cuò)錯(cuò)誤信息是java.lang.ArithmeticException: Decimal overflow。源集群Hive里同樣的計(jì)算一直正常為什么到了Spark SQL就溢出原因是Spark SQL在計(jì)算DECIMAL(p,s)類型的乘法、除法時(shí)有一套嚴(yán)格的精度和小數(shù)位推導(dǎo)規(guī)則。比如兩個(gè)DECIMAL(10,2)相乘按規(guī)則會(huì)推導(dǎo)成DECIMAL(21,4)超出某些場景下的允許精度。Hive在對(duì)應(yīng)場景下則做的是更寬松的轉(zhuǎn)換。解決方案有兩個(gè)方向一是把相關(guān)字段的類型統(tǒng)一擴(kuò)展到更大精度二是修改計(jì)算邏輯中的CAST位置先轉(zhuǎn)成DOUBLE再計(jì)算并在最終結(jié)果處轉(zhuǎn)回DECIMAL。第二種方案要注意浮點(diǎn)數(shù)精度損失金額敏感場景建議先放大精度再運(yùn)算。6.3 運(yùn)行錯(cuò)誤三動(dòng)態(tài)分區(qū)暴增導(dǎo)致Driver OOM現(xiàn)象是某張分區(qū)表的寫入作業(yè)頻繁O(jiān)OM錯(cuò)誤日志定位到Driver端內(nèi)存不足。查看分區(qū)情況后發(fā)現(xiàn)這個(gè)作業(yè)寫入時(shí)按天和按渠道兩個(gè)字段做動(dòng)態(tài)分區(qū)某天數(shù)據(jù)量特別大生成了幾萬個(gè)分區(qū)Driver端維護(hù)分區(qū)元數(shù)據(jù)的內(nèi)存瞬間被打滿。這個(gè)問題的修復(fù)方案有三步第一步在寫入SQL里對(duì)不同數(shù)據(jù)量的渠道做拆分流量大的渠道走獨(dú)立作業(yè)單獨(dú)指定靜態(tài)分區(qū)寫入第二步動(dòng)態(tài)分區(qū)寫入前先預(yù)估分區(qū)數(shù)量超過閾值時(shí)改走批處理循環(huán)比如按渠道維度循環(huán)執(zhí)行一個(gè)個(gè)靜態(tài)分區(qū)寫入第三步適當(dāng)調(diào)大spark.sql.maxDynamicPartitions上限并增加Driver內(nèi)存。這里的核心經(jīng)驗(yàn)是**動(dòng)態(tài)分區(qū)不是越多越好它和Driver內(nèi)存之間有直接的線性關(guān)系。**在遷移大表時(shí)如果發(fā)現(xiàn)分區(qū)數(shù)異常增長應(yīng)該優(yōu)先從業(yè)務(wù)上拆分寫入任務(wù)而不是一味調(diào)大參數(shù)。7. 寫在最后遷移檢查清單與個(gè)人體會(huì)文章的最后一部分我按遷移前、遷移中、上線前、上線后四個(gè)階段整理了一份完整的檢查清單權(quán)當(dāng)項(xiàng)目復(fù)盤留檔。這份清單不一定適用于所有團(tuán)隊(duì)但大體框架可以復(fù)用。階段檢查項(xiàng)完成標(biāo)準(zhǔn)遷移前SQL資產(chǎn)盤點(diǎn)與UDF資產(chǎn)盤點(diǎn)輸出待遷SQL清單、UDF依賴清單遷移前元數(shù)據(jù)對(duì)比所有表/視圖字段類型、分區(qū)、存儲(chǔ)格式差異清單遷移前環(huán)境參數(shù)對(duì)齊ANSI模式、Codec、序列化器、Metastore版本梳理完畢遷移中SQL語法改造全部作業(yè)在測(cè)試集群跑通耗時(shí)記錄在案遷移中UDF替換與改寫無法替代的UDF已重新編譯并完成依賴隔離遷移中三層數(shù)據(jù)校驗(yàn)核心表行數(shù)、聚合、抽樣明細(xì)全部通過上線前執(zhí)行計(jì)劃對(duì)比JOIN類型、分區(qū)裁剪、Shuffle分區(qū)數(shù)符合預(yù)期上線前資源參數(shù)調(diào)優(yōu)shuffle分區(qū)數(shù)、Executor內(nèi)存、并行度按目標(biāo)數(shù)據(jù)量配置上線后灰度與監(jiān)控先切10%流量觀察再逐步放大到全量上線后回滾預(yù)案數(shù)據(jù)回流腳本和雙跑機(jī)制保留至少兩個(gè)賬期最后再分享一點(diǎn)個(gè)人體會(huì)。我剛開始做這個(gè)遷移項(xiàng)目的時(shí)候以為最大的困難會(huì)來自復(fù)雜的SQL改寫后來才發(fā)現(xiàn)真正消耗精力的是那些平時(shí)的隱形約定——隱式類型轉(zhuǎn)換、UDF的序列化行為、動(dòng)態(tài)分區(qū)數(shù)量這些細(xì)節(jié)平時(shí)在Hive里跑著一點(diǎn)感知都沒有換了引擎就全都冒出來了。如果你也在做類似的spark-sql migration我的建議是不要把遷移當(dāng)成一次性翻譯工程而是當(dāng)成一次數(shù)據(jù)鏈路的重構(gòu)。在排期里多預(yù)留兩到三成的時(shí)間給數(shù)據(jù)核對(duì)和異常排查這個(gè)時(shí)間會(huì)連本帶利地還給你。遷移本身不難難的是證明遷完之后行為和原來一致——在這一點(diǎn)上任何工具和腳本都替代不了你對(duì)自己數(shù)據(jù)的理解深度。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
六月婷欧美| 第五婷婷伊人丁香| 99re免费精品视频| 欧美激情综合色丁香婷婷五月天| 丁香五月天堂网| 狠狠色噜噜狠| 荡乳尤物3HP1V5| 可以免费看的AV网站| 97干在线| 人妻AV在线| 色婷综合| 婷婷五月天成人视频| 婷婷综合网| 五月天激情美女久久| 欧洲不卡视频| 日本超碰在线| 欧美性爱五月天| www.色擼擼.com| 99热国产精品| 色情综合网| 久久 中文 日本| 97香蕉碰碰人妻国产欧美| 五月天综合在线观看| 深爱五月激情网| 五月婷久久久| 97干视频| 久久丁香五月天| 激情九月天天天天婷婷| 五月天综合久久| 久久婷婷激情久久| 婷婷六月天天| 99re久久| www.主妇. com| www99精品| 99热全是精品| 综合久久97| 噜噜狠狠色综合久| 4399在线日本A片| 在线资源av-超碰中文在线-成人AV| 婷婷成人五月天成人文学小说| 五月天合网| 丁香婷婷五月综合色情| 亚洲精品色色| 丁香5月啪啪| 99re思思精品视频在线观看| 婷婷激情欧美| 色五月激情五月天| 91AV婷婷| 国产精品a无线| 欧美久热| 东北熟女高潮99综合99| 第五婷婷伊人丁香色| 激情综合在线播放| 97色片| 久9热视频| 人操人| 国产中文字幕在线视频免费观看| 99久在线精品99re5热视频| 97涩婷婷婷婷基地| 五月婷丁香花| 综合五月激情网| 五月久久亚洲| 九九 激情 网| 涩涩五月天| 青草青草视频2免费观看| 婷婷五月成人| 艹色18p| 丁香五月欧美午夜视频| 色色激情网| 超碰在线看| 99这里| 六月丁香网| 大地资源色婷婷视频在线| 91一起操| 欧美色碰| 内射丰满人妻| 亚洲综合另类| 色五月婷婷在线观看第一页舔| 午夜]香婷婷深深爱| 97色啪| 国产成人综合网| 99色视| 色婷婷六月综合| 久久性爰视频这里只有精品| 香蕉久久国产AV一区二区| 亚洲操B| 国产黄大片在线观看画质优化| 激情综合视频| 九九国产视频| 欧美激情VA永久在线播放| 色情五月婷| 五月天成人免费视频| 天天射天天操天天干| www.婷婷.com| 色色哒五月婷婷六月丁香| 99热碰碰| 色婷婷AV久久| 激情人妻蜜夜系列区| 另类图片五月天激情| 久久99网站| 五月丁香婷中文字幕| www五月| 激情久久久| 99啪视频在线观看| 六月五月婷婷| 最近免费中文字幕大全高清大全1| 国产综合久久久777777| 色综合天天天天做夜夜| 9国产在线视频| 91色噜噜狠狠狠狠色综合| 爱草视频在线| 国产亚洲精品久久久久久牛牛| 男人天堂 久久| 亚洲sesesese| 久热九九| 9久国产精品| 婷婷六月色播| 色九九中文字幕| 婷婷的激情五月| 99精彩视频| 亚洲三A| 伊人久久艹| www夜夜操wwwcon| 亚洲成人综合在线| 久久婷婷五月综合色奶水99啪| 米奇影视五月天| 乱精品一区字幕二区| 久热99热| 成人在线网| 色色丁香五月天社区| 丁香八月综合激情| 嫩草极品| 久久婷婷五月天综合| 婷婷六月色| 五月婷婷五月天| 亚州操人在线视频| 夜夜爱爱亚洲| 成人 视频免费观看网站| 久久丁香网| 天天操九九插| 久久 这里只有精品1| 91精品久久久久久77777| 玖玖婷婷五月| 97人人干| 丁香五月视频在线观看| 超碰日韩人妻在线| 在线可以看的av网址| 这里只有精品在线播放| 思思re最新视频| 99r久久这里只有精品| 免费婷婷| 激情五月天在线| 中文字幕无码人妻少妇免费视频| 99热这里有精品2| 国产av天堂| 狠狠色丁香综合| 久久九色| 99久久精品视频女神1| 日B日潘金莲BB| 五月丁香综合伦理片| 欧美私人家庭影院| 99热网站| 99久久99九九99九九九| 人妻丰满精品一区二区A片| 亚洲在线激情婷婷五月| 婷婷五月综合基地| 高清视频一区| 激情五月无码| 在线99精品| 亚洲综合在线播放| 五月丁香婷婷在线综合蜜桃| 色综色网| 婷婷五月激情网| 丁香五月天导航| 97五月天| 五月婷婷激情网| 国产成人av在线播放| 色婷婷电影网| 色婷婷色婷婷五月| 婷婷六月丁香在线| 久久大香蕉伊人| 色婷婷丁香| 丁香六月婷婷缴情欧美| 婷婷基地成人五月天| 久久艹99| 婷婷六月天激情影院| 888久久久| 色五月婷婷久久| 九九这里只这里只有精品| 六月五月天婷婷涩播在线| 久色五月丁香视频| 婷婷五月精品在线| 婷婷色色五月天| 91丨九色丨国产| 超碰不卡在线| 婷婷五月美女直播| 久久99热这里| 久久婷婷激情| 午夜婷婷久久 | WWW,五月| 久久伊人五月天| 99色综合网| www99精品日韩| 991精品在线视频| 丁香六月 婷婷六月| 99热免费| www.国产色| 无码 av电影| 精品人妻一区二区| 天天操夜夜爱| 亚洲色色图片| 欧美99| 久热A片| 欧美25p| 婷婷五月深爱五月| 婷婷夜夜夜夜| 五月色欧洲| 激情性爱五月| 久99热在线观看| 亚洲精品又粗又大又爽A片 | 婷婷五月六月| 婷婷久热| 五月叮香啪| 激情综合网五月天| 天天综合亚洲| 色丁香婷婷| 婷婷五月丁香在线观看| 97丁香五月天| 天天操夜夜夜拍拍拍| 日韩久久色| 激情五月婷婷色色| 五月婷婷激情在线| 99在线看片| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 亚洲操b| 狠狠香婷婷五月| 51XX午夜影福利| 色情五月天导航| 九色在线五月婷婷网址| av在线婷婷| 最近中文字幕大全免费版在线 | 九色婷婷| 久久婷色| 熟妇人妻中文字幕无码老熟妇| 色五月天堂| 噜噜国产| 黄色成人网站在线播放| 97色色色色色| 色婷婷亚洲婷婷| 操碰97| 婷婷操超碰| 五月丁香婷婷色播无码| 久久精99| 色婷婷先锋| 丁香五月黄色| 亚洲综合草草| 五月天国产成人| 成人AV在线电影| 超碰九九热| 色婷婷啪啪啪啪啪啪| 婷色视频| 五月天婷婷av| 天天干天天日日| 色婷婷久久综合久色| 天天综合网、天天综合色| 草草操操| 亚洲综合丁香五月| 逼里香不卡| 99精品大片| 丁香五月天激情视频| 日日夜夜狠狠操| 色综合色| 丁香五月影院| www.夜夜爱.com| 婷婷中文字暮| 九九热亚洲中文在线观看免费| 欧亚色色| 久久只有18视频| 五月丁香六月激情视频| 色99网| AV九九| 色色色五月天婷婷| wWW九九在线播放| 九九国产视频| 青青草原福利在线| 天天色宗合| CHINESE熟女老女人HD视频| 任你躁XXXXX麻豆精品| 亚洲一区二区色图-亚洲精品国产精品乱码-成人AV| 99精品97| 啪啪啪五月天| 丁香六月色婷婷| 激情六月婷婷| sewuyuetingtingiii| 在线日韩视频| 超碰熟女拍拍| 六月丁香啪啪| 免费成人中文字幕| 再次出发二| www.夜夜.com| 香蕉婷婷| 九热精品| 激情綜合W W W,激情五月天| 人人摸人人干| 五月婷婷综合激情网| 色播五月丁香婷婷| 色5月婷婷| 五月婷婷久草| 思思99精品视频| 天天爽夜夜爽夜夜爽精品视频 | 国产1区2区3区在线观| 亚洲综合在线丁香五月| 日日爽日日| 五月丁香婷婷五月色| 激情黄色小说色五月| 欧美成人在线观看| 久久五月婷| 婷婷五月在线播放| 高潮毛片又色又爽免费| 国产伦理精品高清在线观看网站一区二区 | 亚洲五月婷| 综合aV在线| 综合大香蕉| 99热成人在线观看| 日产精品久久久久久久蜜臀 | 99久re热视频精品98| 操射国产日本| 五月婷婷影视| 99亚洲欧洲| 丁香五月成人社区| 97在线综合| 久草热视频在线观看| 激情婷婷丁香| 精品网站99| 丁香九九九九| 久久精品9| 99精品在这里| 色色五月天com| 久99久热只有精品国产99| 日本五月婷婷| 九九香蕉网| 4438激情网| 丁香花五月天社区| 色五月丁香五月天| 丁香五月天亚洲综合| 色性日本| 99久久偷拍视频| 伊人婷婷五月| 亚洲午夜国产成人电影VA国产欧…| 激情婷婷五月亚洲| 色色色网站| 性色播| 欧美人妻一区二区| 色婷婷av在线观看| 亚洲色啪| 九九久久综合网站| 91色色色视频| 国产在这里只有精品| HD久久精品视频| 天天色综网| 丁香五月婷婷综合激情啪啪啪啪啪啪啪| 五月婷婷激情色情网| 国产亚洲成AV人片在线观黄桃| 丁香 婷婷五月| 天天综合精品| 五月婷导航| 婷婷丁香色女人| 深爱1激情网| 奇米色大香蕉| 国产免费一区二区三州老师F1F1| 五月丁香啪啪| 伊人综合网站| 欧美丁香婷婷五月天| 一区中文字幕电影| 综合大香蕉| 日本老女人黄页在线播放| 99激情| tingtingjiqingwuyue| 激情99| 激情综合网,婷婷| 玖玖色综合色| 久9久成人精品视频| 丁香六月久久| 91精品激情9| 色色色色色爱| 日韩在线99| 天天干夜晚夜操| 狠狠色情婷婷| 五月天AV大香蕉| 婷婷性爱网| 久久五月人人摸| 大香蕉五月婷婷丁香| www激情com| 97色97干| 激情影院69| 五月天激情婷婷| 成片免费观看视频大全| 超碰婷婷色| 天天日综合| 大香蕉520| 青青草婷婷五月天| 超碰亚洲天堂| 色狠久| 久久九九综合| 99热在线爱| 色五月欧美| www夜夜操com| 爱爱色五月天| 色婷婷久久天天性爱| 午夜精品人妻无码一区二区三区| 六月天婷婷| 思思网站| 超碰在线免费| 亚洲成人精品三区| 麻豆WWWCOM内射软件| 人人摸人人| 婷五月丁香| 婷婷丁香91| 99色综合| 新97人人上人人| 午夜激情五月天| 深爱 五月天| 伊人色综合久久久| 青青操成人福利| 欧美色五月| 色99色| 亚洲人妻一区二区| 九九热在视频| 婷婷六月啪啪| 超碰9在| 色综合久久久无码中文字幕999| 婷婷五月天av| 五月天婷婷伊人| 美英法精品无码免费视频| 色婷婷狠狠爱| 久久东京热婷婷五月| 超碰永久在线| 一本婷婷丁香久久| 狠狠色噜噜狠| 九九综合九| 色婷婷五月综合| 婷婷狠狠97| 亚洲色婷婷视频| 色婷婷国色天香综合| 色九九综合| 182TV亚洲| 99精品女人天堂| 99热欲| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 日韩av变天就操逼不卡区| 丁香婷婷六月| 99热免费| 99免费超碰在线| 成人做爰A片免费看网站找不到了 噼里啪啦在线观看免费完整版视频 | 激情五月婷黄版| 九九亚洲综合| 久久久人妻人伦| 久久刺激网| 97碰碰视频| 九九色天堂| 久久久潮喷-久久久九九-成人AV| 丁香五月天影院| 麻豆忘忧草午夜| 91久久九| 色偷偷色婷婷| 91超级碰碰碰| 99热久只有| 熟女乱论网| 99热精在线九九久久保| 激情五月六月婷婷综合啪啪| 艾小青av| 国产偷人妻精品一区| 五月婷婷激情综合网| 色色色无码| 偷偷操99| www夜夜| 日本99久久| 大地9中文在线观看免费高清| 色婷婷成人做爰A片免费看网站 | 久久久婷婷婷| 99在线视频网址在线观看| 亚洲99精品九九在线| 九月婷婷在线观看| 无码啪啪| 色色aⅤ網| 丁香五月亚洲| 婷婷激情九月| 精品一二三区久久AAA片| 色婷婷激情Av久久久| 中文字幕人妻AV| 亚洲综合另类| 激情五月综合免费| 日日撸夜夜操| 欧美激情五月天| 丁香五月婷婷老师网站| 99热日韩| 呦呦v线| 国产欧洲欧洲精品久久| 这里只有精品视频在线| 黄色激情网站在线观看| 超碰99久久| 无码G高清天| 天天日天天干天天天| 亚洲啪啪啪啪| 丁香五月天91| 91 九色 熟女| 99热免费在线| 搡BBBB搡BBB搡18| 婷婷久久图片| 夜夜噜夜夜奇| 97色婷婷| 色婷婷情片| 婷婷丁香色五月天久久88| 热99在线| 99免费超碰在线| 日本久草福利| 伊人AV五月婷| 少妇被下春药玩弄A片| 综合亚洲AV| 婷婷五月 丁香六月| 五月亭亭性| 精品一二三区久久AAA片| 激情五月婷婷啪啪| 婷婷综合在线观看视频| 综合网五月| 久艹久| 538久久| AV在线免费网站| 久久免费少妇高潮99精品| 九九色综合| 五月在线| 中文字幕成人日韩| 能看的AV网站| 六月丁香五月婷婷| 色九月婷婷| 五月天婷婷综合| 91操黄| 久久这里在精品视频| 婷婷综合一二三| 99热爆在线| 99r这里只有精品哦| 五月丁香 啪啪| 99色在线视频观看| 色婷婷九月| 三男玩一女三A片| 丁香五月亚洲AV| 狠狠狠狠狠| 1024在线观看免费视频| 这里只有精品视频在线看| 日本99热| 梁铮版蜘蛛女在线观看| 色五月播五月| 五月综合亚洲色| 97婷婷狠狠| 久操97| 五月丁香六月色| 91碰操| 亚洲色激情| 影音先锋男人av资源站| 99热这里只有在线| 97人人操com| 色欲久久久久| 97精品综合久久内射| 天天色天天色天天色天天色天天色| 国产全是老熟女太爽了| 五月亭亭六月激情| 伊人香大香蕉视频| 夜夜爽天操| 婷婷94s| 婷婷五月色情天| 婷婷丁香综合在线| 五月天激情综合网| 五月丁香999| 99热精品在线| 99er免费在线观看| 五月丁香六月激情| 婷婷五月天开心激情网| 97人人爱人人操| www.99精品在线| 丁香五月区| 婷婷99狠狠躁天天躁| 色色色色色热| 超碰只有精品在线| 日本色狠狠| 亚洲小电影在线观看黄999| 色五月91| 婷婷玉月丁香五月在线视频| 香蕉五月婷婷| 丁香五月婷婷啪| 丁香五月天偷拍| 粉嫩AV久久一区二区三区| 99精品无码网站| 东北黄色一级| 可以看的AV| 99精彩视频在线观看| 五月丁香婷婷激情爱爱| 天天久久狠狠色综合| 六月色日韩| 九九色婷| 九九久久精品| 色情免费视频播放| 蜜臀av粉嫩av懂色av| 狠狠干无码| 人人干Av| 婷婷五月天av| 九月婷婷在线视频| 97色片| 91啪级电影| 国产第99页| 日韩九区| 大香蕉久久婷婷精品综合| 六月丁香成人| 国产九九一区二区三区| 乱岳熟女50岁| 91九色精品女同系列| 精品福利911| 欧美乱码国产一级A片| 婷婷精品视频| 九九热最新| 亚洲视频在线观看99| 这里只有精品视频| 先锋资源 996| 色五月天堂| 婷婷五月色播天| 九月丁香亭亭| 91人人爽久久涩噜噜噜| 日本色婷婷综合| 色色五月婷婷久久| 玖玖九九9999在线观看视频精品| 亚洲精品成人| 97影院一级片| 日韩AV大全| 五月丁香综合久久| 亚洲Va成人| 天堂综合久| 精品欧美性爱超级爽| 97碰在线视频| 色五月 五月婷婷| 丁香五月天无码| 亚洲九区| 成人av在线网站| 狠狠色噜噜狠狠亚洲A∨| 性无码专区无码| 九九99精品| 天天拍天天操| 热久久99热欧美国产亚洲| 婷婷亚洲五月丁香综合在线| 久久久久久欧美精品se一二三四| 丁香五月AV| 成人无码中文| 人操91在线| 激情性爱五月天网页| 在线播放成人网站| 色婷婷电影网| 夜夜操狠狠操| 成人va在线播放| 色五月婷婷基地| 免费AV在线| 99热这里只有精品在线观看| 综合网视频| 婷婷噜噜| 激情五月综合| 国产精品色色| 日韩人妻在线观看| 99热综合网| 操九色| 91成人看片| 婷婷 伊人 久久| 色播五月天婷婷老师| 怡春院天天干| 超碰成人AV| 激情伊人网| 日韩精品一区二区亚洲AV观看| WWW.久久久久久久久久久久久| 日本A片一区| 激情综合婷婷久久| 久久婷婷丁香视频网| 综合色网站| w婷婷五月婷婷w| 婷婷综合色图| 丁香五月在线视频| 操嫩逼电影| 色欲天天综合| 亚洲无码yw| 色婷婷久久久| 欧美电影在线播放| 99热人人艹| 超碰在线94| 久99在线视频| 激情婷婷五月女| 呦呦v线| av五月天婷婷丁香| 六月色播| 色优久久| 激情五月天.色网| 国产精品色婷婷久久久精品| www.狠狠| 天天干天天操天天上| 五月天激情小说欧美激情| 99在线免费视频| 性色五月天| 97超碰,人人舔,人人操,人人摸| 99热欲| 好看的国产精品| 五月婷婷开心色伊人| 亚洲激情.com| 久久久久人妻网址| 在线播放 精品| 激情五月天综合网| 色婷婷丁香五月天在线视频| 5月丁香啪啪啪| 久久五月丁香| 国模九区| 色色综合成人网| 亚洲va欧美va国产综合久久久| 97se视频在线| 久久97久久99久久综合欧美| 亚洲色激情| 激情五月网站| 99热新网址| www久久久久久久久久久| 99久久五月天| 婷婷综合成人五月天| 九九综合| 五月婷婷香蕉| 婷婷丁香五月av| 激情綜合W W W,激情五月天| 成人午夜无码视频| 精品99视频| 婷婷丁香五另类网站| 午夜婷婷久久 | 五月婷婷六月丁香激情深爱| 开心激情网五月| 天天日天天爽| 五月婷婷av| 五月色天情| 欧洲色| 任你爽精品免费视频6| 亚洲九九99精品视频在线播放| 91精品久久久久久| 五月丁香趴趴| 五月天黄色激情小说| 五月丁香偷拍| 天天操B| 五月天久久91| www,99热在线观看| 五月情四婷婷| 激情第四色| 九九视屏| 特级西西4444www无码| 亚洲激情四谢| 人人天堂操| 九九香蕉网| 一逼色综合| 开心婷婷中文字幕| 五月婷婷丁香综合,亚洲天堂| 另类小说五月天综合| 丁香五月天婷婷激情| 97色久| 色天堂在线| 亚洲精品网址| 九九热99热| 99碰碰。| 亚洲成人va| 国产性爱大片久久| 婷婷五月天在婷| 五月综合激情久久| 久久人妻情侣| 超碰97在线操| 人人干AV| 欧美婷婷色| 5月丁香六月情| 五月开心播播网| xxx综合在线| 秋霞学生妹一二级| 国产精产国品一二三在观看| 成人欧美一区二区三区在线观看| 亚洲精品字幕在线观看| 99热视| 极品少妇XXXX精品少妇偷拍| 五月在在观看| 九九99精品免费播放| 五月丁香六月合| 久久六月婷婷| 五月天 无码| 久久激情天堂| av大香蕉| 广东99色在线| 一级片操逼视频| 久久婷婷五月草视频| 91聚色综合网| 涩涩五月天| 欧洲不卡视频| 噼里啪啦在线观看免费完整版视频| 五月婷婷六月丁香激情综合网| 日本少妇裸体做爰高潮片| 能看的AV网站| 国产第99页| 婷婷五月天激情综合| 婷婷五月激情的图片| 亚洲亚洲人成综合网络| 狠狠色综合五月| 综合激情在线观看| 国产激情久久| RenRenSe在线视频网站| 91AV视频| 亭亭五月色男人| 久色中文| 日本婷婷在线| 激情网五月天| 综合激情站| 亚洲午夜AV| 亚洲在线免费成人| 色婷婷五月天在线观看| 欧美激情综合| 久久免费高| 婷婷涩涩五月天| 婷婷激情五月天网站| 婷婷六月激情综合| 91丨九色丨熟女| 婷婷黄色五月天在线视频| 国产人人操| 99色网站| 国产密乳av一区二区三区四区| 欧美一级色| 超碰熟女农村在线69| 欧美综合五月丁香六月婷| 婷婷的五月天另类视频| av成人在线播放| 婷婷五月成人| 欧美色色色色色色| 五月天色综合服务平台| 9l视频自拍9l视频自拍九色学生| 男人天堂伊人五月丁香| 六月婷婷AV| 亚洲五月婷| 丁五月激情视频免费| 色之综合网| 色色九九五月天| 亚洲精品无人区| 99激情在线| 涩婷婷五月天| 干亚洲天堂| 免费97碰碰| 久久91久久精品久久| 这里只有精品1| 成人五月天视频| 综合xx网| 婷婷五月天av| 99人妻碰碰碰久久久久| 久草丁香婷婷1024| 激情第四色| 人人97碰| 看片视频在线免费日产在线看| 日日干日日s| 日本久久99| 91九色欧美| 久久丁香婷婷色情综合| 日本熟妇乱妇熟色A片蜜桃| 成人视屏在线观看| 99热精品中文字幕| 五月丁香激情婷婷综合| 六月综和久久| 婷婷丁香五月天婷婷| 亚洲婷婷婷| 开心久久网婷婷| 色综合久久久无码中文字幕999| 深爱五月婷婷| 久久99久久99精品免视看婷婷| 日本色婷婷| 天天久| http://www.sd-xiangsu.com/| 婷婷精品在线| 五月丁香综合精品| 热无码A∨| 色情五月丁香婷婷网| 色综合丁香| 五月丁香久久久久| 六月婷婷色色色| 99人人精品| 77777亚洲午夜久久| 91色欲综合| 奇米影视在线视频| 男人的天堂在线婷婷| www...com黄在线观看| WW婷婷五月天com| 琪琪色网在线| 久久久久久婷| 青青草原爱爱网| 久草网大香视频| 九九综合88| 亚洲精品成人片在线播| 丁香六月婷婷色播| 97干在线播放| 欧美一级色| 久久草人妻| 亚洲人人96@| 激情五月丁香色婷婷| 五月天综合区| 婷婷五月骚厕所| 五月丁香六月婷婷婷婷| 天天干天天干天天干天天干天| 婷婷丁香色情五月天| 色导航色婷婷五月天在线观看| 五月婷综合| 偷拍91九色| 国产免费一区二区在线A片视频| 婷婷色五月天在线观看| 婷婷综合久久| 男人先锋久久| OUMEIRIHANCHENGREN| 日本97在线视频| 97人人射| 日日射天天射| 免费在线观看欧美激情xx小视频| 激情av在线| 99精品在线观看视频| 狠狠精品干练久久久无码中文字幕| 久久五月天激情| 精品九九网| 五月婷婷激情综合| 襙比视频| 亚洲美女网Va| 久久五月丁香| www99精品日韩| 五月天婷婷伊人| 99热精品在线播放观看| 五月丁香婷婷三级| 色综合久久综合中文综合网| 久久99热这里只频精品6学生| 久久免费高| a九九热www| 综合狠狠干| 99网99热| 性做爰1一7伦| 五月丁香激情综合啪啪| 久久只有精| 丁香五月欧美激情| 婷婷99狠狠| 天天日日| 婷婷丁香社区网| 丁香六月亚洲综合| 婷婷色在线观看| 大香蕉久久综合网| 成人五月天丁香| 思思re视频在线| 热久久91| 五月丁香久久激情综合| 婷色五月| 噜噜色婷婷| 国产精品久久久久久久久久| 婷婷五月天情色| 丁香五月激情综合在线观看| 99超级碰碰| 九月丁香久久网| 啪啪啪综合网| 激情五月婷婷开心网| 五月天激情小说| 激情五月综合久久| 丁香五月AV综合激情| 亚洲在线操| #NAME?| 99热国产国产| 婷婷五月丁香91| 丁香婷婷五月综合欧美另类| 樱花99视频| 久久婷丁香五月| 国产操逼视频网站| 狠狠狠狠狠狠狠狠草| 成人精品在线| 免费人人操| 9久热这里只有精品| 色色色热| 色播五月婷婷| 超碰日日操| 91人人爽人人操| xfplayav在线| 色优久久| 欧美情月伍月天| 99热综合网| 成人色图情色成人网 www.5b5b5bcom 五月天 | 国产精产国品一二三在观看| 99久久9| 夜夜大香蕉婷婷丁香| 婷婷情色五月| 婷婷中文字幕版| 成人精品视频99在线观看免费| 色色色999| 九九热10| 丁香狠狠色婷婷| 天天爽天天日| 久久婷婷综合拍| 玖玖资源在线视频| 婷婷五月天亚洲综合网| 色丁香婷婷美女视频网站| 国产精品人成A片一区二区| 深爱激情中文五月天av| 日本三级大片| 丁香色色网| 丁香五月婷婷色| 色五月丁香五月| 色五月综合| 97人妻碰碰碰久| 久久只有18视频| 啪啪啪大香蕉| 来吧亚洲综合网| 丁香六月婷婷缴情欧美| 激情六月天| 婷婷五月深深的爱| 国产肥白大熟妇BBBB视频| WWW.五月天9999| 深爱激情五月天| 99高级会所久久| 丰满少妇猛烈A片免费看观看| anquye伊人| 国产乱妇无乱码大黄AA片| 色婷婷成人影片| 国外亚洲成AV人片在线观看| 色婷丨日丨天丨综合久久| 久久婷婷九月国产精品| 天堂AV在线看| 69精品人人人人人人| 久久婷网| 99热r| 国产一区二区三区影院| 丁香五月综合亚洲| 精品无码片| 14色综合婷婷| a色色色色色| 思思久久99热只有频精品66| 台湾佬天天日丁香婷婷五月天 | 91碰| 开心久久五月天| 国产在线激情视频| 五月丁花六月丁香综合| 26uuu丁香婷婷五月| AV人人操| 五月丁香六月综合激情网| 91九色无码内射| 日韩无码专区| 五月丁香网中文字幕| 国内久久婷婷| 婷婷色九月| 婷婷六月开心网| 一级无码作爱片| 欧美婷婷| 日本性激情色播| 日本在线99| 综合激情婷婷| av性爱网站| 久久久久9| 日韩乱轮AV| 日本欧美成人片AAAA| 99色视| 久草 tingting| 六月丁香综合| 丁香五月人妻熟女| 色情五月天丁香社区| 欧美丰满熟妇BBB久久久| 五月丁香黄色视频| 国在线激情网| 丁香五月色色婷| 这里只有精品视频| 丁香六月婷婷一区二区三区| 欧美日韩成人在线| 色色色宗合网| 久久久久久人妻| 日韩1区2区| 色色亚洲无码| 综合亚洲AV| 亚洲精品一区中文字幕乱码| 中文成人在线| 色五月婷婷五月久久| 在线观看av网站| 五月婷婷黄色网址| 亚洲色99| 日本va欧美va欧美精品88| 久久黄色免费视频| 先锋资源91| 欧美A片在线视频免费观看| 五月丁香| 亚洲第一第二网站| 婷婷五月天激情在线观看| 思思99久久| 色色色色色色色色色色色色色色,网站| 综合激情视频| 夜色综合网| 天天干com| 五月天亚洲最大成人| 九九色图| 色综合狠狠色| 色域五月丁香| 夫妇交换刺激做爰| 丁香五月婷久久| 五月天婷婷激情| 五月色丁香视频精品| 人人色性网| 久久婷婷五月天激情新地址| www.久久久久久| 日本操B片| 超碰在线免费观看日韩| 天天插天天插| 久操热| 婷婷在线综合| 综合婷婷五月天| 99热这里只有精品官网| 亚洲丁香五月深爱五月| 日韩色色小视频| 丁香激情久久| 久久狠狠干| 东京热免费视频网站| 日韩无码亚欧无码| 又大又粗九一在线| 色情成人五月天| 五月天色五月| 九九热视频这里只有精品| 六月丁香久久| 9久久婷婷国产综合精品性色| 亚洲色另类| 欧美婷婷成人| 五月婷婷在线综合| 人人看人人要| 五月婷综合网| 五月丁香无码| www.亭亭五月天| 亚洲色情网站| 色五月婷婷影院| 激情五月天伊人av| 色五月女| 国产激情综合五月久久| 日本婷色| 97干综合网| 中文资源在线a | 99视频内射三四| 久久视频这里有精品99| 97人人操人人爽| 婷婷六月激情小说网| 婷婷五月天影院| 开心婷婷中文字慕| 五月天婷基地| 2020久久婷婷五月| 国产精品久久久60086| 五月丁香色婷婷基地| 天天色天天爱天天爽| 天天综合天综合| 色亚洲激情| 丰满人妻一区二区三区| 五月天综合激情网| 啪啪91| 被强行糟蹋的女人A片| 秋霞少妇AV网站| 亚洲成人精品三区| 综合色网站| 99re6热在线精品视频播放速度| 欧美大奶熟女噜噜噜噜| 婷婷五月精品在线| 可以观看的AV| 91成人电影| 激情婷婷五月天| 中文字幕中文有码在线| 婷婷伊人綜合中文| www.婷婷六月天| 亚洲色爽| 成人超碰Av| 色五月婷婷av| 乱精品一区字幕二区| 婷婷五月综合免费在线| 五月激情婷婷综合| 电影爱拉战争免费观看| 色婷亚洲| 欧美影院婷婷| 51精品国自产在线| 久久国产AV| a网站免费观看| 五月丁香六月欧美| 久久人人九| 99热这里只有精| 大香焦A∨| 亚洲AV中文在线| 丁香色播五月天| 日本狠狠色| 涩涩五月天| 亚洲婷婷激情综合激情999精品| 日韩色色色色色| 五月婷婷亞洲中文| 色综合九九| 九色视频九色九色91jiuseshipin| 色婷六月| 就爱啪啪婷婷| 超碰9| 超91热| 亚洲国产婷婷色五月| www激情五月天| 九九精品热| 日韩 mm 不卡| 亚洲中文无码成人| 色色热| 91性交在线播放| 丁香五月香蕉| 丁香六月婷婷综合啪啪| 思思热在线观看| 99五月婷| 婷婷激情欧美| 99热国产这里只有精品| 韩国97天堂| 狠狠五月天婷婷| 五月婷婷色色色| 亭亭丁香97| 天天拍夜夜爽日日| 久久婷婷成人| 丁香六月欧美| 狠狠擼综合| 日韩成人电影AV| 婷婷娌伦网| 99热国产在线| 粉嫩AV久久一区二区三区| 五月天婷婷操逼视频| 人人操人人爱丁香五月| 疯狂做受XXXX高潮A片| av网址在线| 五月天激情网图片| 91九色白丝| 少妇激情五月婷婷| 99操逼| 欧美色偷拍| 婷婷五月激情在线视频| 专区无日本视频高清8| 成人做爰高潮A片免费视频| ss视频xx91| 成人综合网站| 天天做天天爱天天搞| 任你操精品免费| 九色激情| 婷婷五月天亚洲激情戏精品| 久久99网站| 久久99久久99精品免视看婷婷| 五月丁香综合激情| 久久婷婷网址| 亚州性爱99| aV直接看| 婷婷五月丁香婷婷| 婷婷亚洲综合| 99亚色色色| 五月天色影院| 色色色色综合网| 精品久久9| 婷婷欧美综合| 欧美日本黄色| 激情亚洲婷婷| 色五月激情综合| 久一网站| 超碰色色综合| 97碰| 另类专区在线| 五月婷婷影院| 91超碰人人操| 91精品久久久久久| 丁香五月天堂| 99精品视频免费在线播放| 天天天干夜夜夜操| 婷婷色色狠狠| 久久综合九九| 五月丁香婷婷激情在线| 婷婷五月丁香亚洲| 四月婷婷丁香| 婷婷综合偷拍|