久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(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)梳理 從接手的那天起我就知道這活兒沒有表面看起來那么簡(jiǎn)單。團(tuán)隊(duì)反饋過來的需求很簡(jiǎn)短——把現(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)樗鼈兊墓ぷ髁?、風(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)樾鹿δ堋踩a(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è)用場(chǎng)景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ù)方式也很簡(jiǎn)單把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)常簡(jiǎn)寫成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滿天飛。這種問題排查周期很長(zhǎng)強(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)。最簡(jiǎ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í)以上而且集群資源占用居高不下。一開始我以為是資源競(jìng)爭(zhēng)后來看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ù)方式很簡(jiǎn)單把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)超出某些場(chǎng)景下的允許精度。Hive在對(duì)應(yīng)場(chǎng)景下則做的是更寬松的轉(zhuǎn)換。解決方案有兩個(gè)方向一是把相關(guān)字段的類型統(tǒng)一擴(kuò)展到更大精度二是修改計(jì)算邏輯中的CAST位置先轉(zhuǎn)成DOUBLE再計(jì)算并在最終結(jié)果處轉(zhuǎn)回DECIMAL。第二種方案要注意浮點(diǎn)數(shù)精度損失金額敏感場(chǎng)景建議先放大精度再運(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ù)異常增長(zhǎng)應(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久久| 精品超碰国产| 国产中文字幕曰本毛片| 久久久穴999| 91美女视频直播| 2017大香蕉| 中文字幕,人妻,日韩| 亚洲女人毛茸茸91| 亚洲精品xxx| av网站免费线看| 收看日本人日bb| 亚洲欧洲小说图片视频| 黑人粗大V S日韩女优视频| 久久五十路熟女人妻| 96久久精品一二三区色欲| 久久久久亚洲Av无码专区老牛影视| 美国日韩黄片| 日韩人妻大香蕉| 九九免费影片| 亚洲日韩美女中文字幕乱| 亚洲欧美黄| 国产AAAAAABBBBB| 色狠狠色| 一本色道久久综合狠狠操| 亚洲一区二区在线观看91| 婷婷丁香五月天亚洲天堂网| 欧美96在线|欧| 国产亚洲深夜激情| 国产精品丝袜久久亚洲不卡| 精品国产91内射久久| 亚洲 欧美都市激情| 在线综合 亚洲 欧美中文字幕| 伊欧美综合视频| 久久风骚城市| 天天流夜夜操| 国产美女高潮视频| 婷婷丁香六月天| 国产乱码久久久| 一色网男人的天堂| 多毛小伙内射老太婆 | 天天添天天干电影| 欧美精品一区二区少妇免费A片| 亚洲综合 欧美| 久久这里只精品99re66图 | a片自拍直播视频| 国产精品久久发布| 日韩操逼HD| 2019精品国产无码成人| 碰人碰碰人人开房人肉| 欧美亚洲美少妇一区二区| 成人婷婷丁香| 成人福利视频网| 大香蕉99999| av72网| 日本三级网页| 青青操网| 亚洲欧美97√| 欧美黑人91| 日韩有码免费视频| 婷婷五月丁香五月| 亚洲啪啪性视频| 成年人性爱日韩| 热思思免费视频| 久久αⅴ| 午夜男人av| 男人的天堂VA| 精品玖九九久| 草草电影院| 男人的天堂免费| 天天综合站| 日韩精品三级| 老熟女综合网| 日本在线观看网址| 欧美人妻久久精品二区三区 | 狠狠色伊人亚洲综合网站色| 爱爱啊啊啊| 亚洲影视高清第一页| 久久精品女同亚洲女同13| 综合天天。| julia ann久久| 99在线精品观看视频中文| 热久久无毒不卡| 亚州综合色| www久久国产精品| 丝袜夫妻自拍| 大香蕉在线视频15| 大香蕉伊然在亚洲91| 美女91av| 中文字幕人成乱码熟女香港| 欧美天天拍| 日本最新免费韩国1区2区视频播放| 亚洲日韩电影| 亚洲日韩美国人妻| 欧美少妇大量自拍视频在线观看| 超碰97首页| av黄图片在线观看| 再深点灬舒服灬太大了好硬好爽| 天天操av懂色| 亚洲天堂另类| 国产精品自拍xxxx| 熟妇高潮精品一区二区三区下载| 激情专区综合| 九九热五区| 国产呦精品系列在线观看| 久草精品国产99| 老司机老司机午夜影院| 亚洲色图20p| 欧美92| 国产懂色精品国产av| 日本蜜桃| 成人av在线播放| 长长久久免费视频| 97 色综合| 天美麻花大全视频| 久久亚洲天天做| 午夜爽爽爽| 人妻乱仑一区二区三区| 欧美性天天影院| 欧美强奸乱| 久久黄人人爽视频| 性爱动态120秒| 日本淫乱女一区二区三区视频| 婷婷丁香五月天综合东京热| 91精品国产91熟女| 欧色综合| 欧美激情中文字幕另类小说| 欧美日产国产在线成人第一区| 在线 亚洲 网爆 自拍| 国产熟女无套内射| 欧美黑人与女人91~| 国产剧情在线| 热久日综合| 日韩国产成人自拍视频| 免费超碰97久久| 黄污污污污| 啊啊啊啊网站| 亚洲高清少妇| 国产乱弄免费在线视频。 | 狠狠中文字幕| 99国产精品在线观看| 97久久国产| 一区二区国产视频在线观看| 国产伦精品一区二区三区视频女| 国内伊人久久久久久网站视频| 久婷婷一区| 女人高潮大叫一级毛片| 国产无码精品久久久久久| 操人妻逼91| 麻豆国产97在线| 亚洲 欧美 第一页| 91爱看| 久草成人福利导航| 亚洲成熟国产精品美女| 免费亚洲国产精品久久一区| 久久最新免费视频23| 欧色网址| xxxx网站亚洲精品| 欧美一级美片在线观看免费| 91黑人狂躁丰满熟妇| 夜草欧美| 激情图片亚洲色图| 97一区二压| 东北女人av| 中文字幕永久在线| 日本孕妇一区二区视频操逼免费看 | 操操逼操操逼操操逼逼| 国产福利小视频高清在线观看| 久久精品黄色| 亚洲九九九| 欧美欧美啪啪视频| 大香蕉乱级| 亚欧无码在线| 91蜜桃婷婷狠狠久久综合9色| 九一亚洲国产免费| 99国产精品久久久久久久成人热| 亚洲自拍一区夜夜操| 婷婷美人网| 九区国产| 舔舔啊| 福利操逼| 无码逼| 日韩精品一区二区三区色欲| 激情五月天丁香| 夜夜操狠狠操| 日本少妇va7777| 加勒比无码一区二区三区| 精品国产嫩穴视频| 一本久久精品中文字| 大香蕉2017| 99少妇| 亚洲日本激情| 日韩另类色图| 国产精品69久久久久久久| 欧美春色| 亚洲精品成人激情在线| 国产吹潮女在线观看| 亚洲欧美成人在线| 91小视频| 青青草好吊| 久操视频在线观看| 传媒免费一区二区三区| 国产97在线播放| 一起草精品人妻| 日欧操屄| 国产精品不卡高清在线观看| 性色A∨91| 91青青在线| 老熟妇一区二区三区| 日本午夜福利视频| 精品久久久久9999| 少妇人妻无码| 99热亚洲天堂| 啊啊啊啊啊在线观看网址 | 9丨久久九九九 | 91天天美女| 九久久九精品视频| 好看的91视频| 人妻免费观看| 美女天天干| 人妻少妇无码| 99re久久| а√天堂资源官网在线资源| www.亚洲黄色| 奸色色 男人天堂 天天射| 26uuu国产免费观看| 亚洲国产高清福利视频| 麻豆这里只有精品| 五月丁香综合| 精品久一区免费| 午夜精品99久久久久传媒| 激情五月天婷婷| 亚洲成av人片色午夜乱码| 岛园激情| 25国产精品免费观看| 久99久视频精选| 99re6久热只有精品6在线直播| 亚洲AV无码成人精品久久| 亚洲精品成人激情在线| 久操大香蕉手机视频在线看| 日本特黄f c2| 99操| 色色97爱| 无码免费在线观看黄色片| 综合免费无码中文| 亚洲男人bt天堂| 欧美大香蕉在线观看| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 亚洲黄日韩无码专区| 国产乱子伦一区二区三区免看| 欧美精品欧美精品系列| 国产在线观看一区二区三区| 郑州宾馆老熟女露脸啪啪| 一块操欧美性爱| 欧美在线伊人色| 都市激情人妻一区二区青青操视频 | 久久熟女久| 60秒免费小视频| 中日韩久久久免费看| 色欲天天综合久久久无码网中文| 岛国毛片手机在线观看| 亚洲情色91| 330dv亚洲成年视频网| 最新制服中文第一页| 无码人妻一区二区三区色欲aⅴ| 久草福利在线资源站| 亚洲免费日韩在线一区二区| 青青草原伊人网| 国产精品不卡一区二区三区av| 日本九九久久99| 天堂性色| 深夜国产一区二区三区在线看| 99操碰| 日韩情色AV| 亚洲欧美伦综合| 人干人人人操人人摸| 成年女人一区| 不卡视频一区蜜桃视频| 97人人干人人操| 色天堂综合| 91精品老女人| 日本三级日本三级99| 欧美另类自拍 | 你懂的在线观看区国产| 美中韩AV综合网| 综合色久欲| 国产一级137片内射麻豆| 啊啊啊不要好疼视频| 使劲用力艹少妇视频一区二区 | 欧 美 自 拍 偷 拍| 亚欧精品久久久久久久久久久| 伊人久久亚洲色欲综合网站| 影音先锋乱| 熟妇精品juliaannAV| www.av家庭乱伦| 婷婷香蕉欧美在线一区二区三区| 男人的天堂Va| 伊人五月天| 日韩精品大香蕉伊人在线| 亚洲AV成人精品网站在AV| 久久香蕉国产传媒一区剧情天美| 国产91美女视频| 国产97色在线| 欧美热图99| 色情五月婷婷| 丁香五月自拍| 久久久久久无码人妻中文字幕| 黄色一区二区秘书性感| 校园春色宗合网| 免费AV中文网在线观看| 欧美久久毛片基地| 乱伦AVxx| 99精品九九九九九九| 国产成人久久久精品免费AV| 久区视频| 亚洲av在线免费观看| 久热一区二区| 97欧美精品综合| 极品五月天噜噜| 你草精品在线视频| 伊人超碰97| 熟女人妻一区二区三区| 日本精品不卡一二三区| 色综合中文字幕不卡| 老鸭窝成人| 欧美性爱日韩性爱| 热G综合热G中文| 97人人草| 好涩综合| 亚洲情色五月天| 自拍偷拍亚洲熟女妇人精品 | 国产精品97超碰| 国产成人+综合亚洲+天堂| 天天综合91| 亚洲自拍欧美国产首页网曝| av一区二区三区 中文| 欧美性91| 欧美青青视频| 丁香五月综合| 无码国产Av| 91网站18+| 青草精品视频一日本久久久久网站| 九九性爱网| 夫妻天天操岛国视频| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | {男男暴菊gay无套网站| 亚洲天堂久久| 福利天堂| 黄色网址久久精品欧美喷水| 少妇高潮对白在线观看| 亚洲国产丝袜熟女av| 欧美熟妇亚洲版| 99色婷婷| AV污污污污| 久久精品熟妇丰满人妻99| 青青青艹在线视频| 亚洲小电影免费涩涩成人在线高清| 999色欧美中文字幕| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 国产不卡中文字幕免费avi| 日本理论在线| 99re国产精品视频| 欧美 亚洲| 免费超碰97久久| 亚洲综合影视| 激情九月婷婷| 色狠狠 - 百度| 99久久久无码国产精品性啊聊| 神马午夜久久久| 99爱在线视频| 色噜噜婷婷| 粉嫩粉嫩一区性色AV片| 日本性交操一区二区不卡系列| 欧美92| 美女主播色欲91抠b在线播放| 91欧美高清| 中文久久爆乳| 色官网在线| 亚洲中文国际强奸字幕| 亚洲免费成人在线高清无码视频| 3PAV乱伦视频| 午夜国产乱伦视频| 中文色综合| 国产又粗又大硬免费色网视频| 一本色道久久综合狠狠操| 中文字幕人乱码中文字的预防方法| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 新亚洲无码| 大香蕉中文网| 久草看看看| 超碰九九| 99操99| 日韩午夜精品一区二区三区电影| 美女国产一区二区久久| 福利在线观看一区二区| 久久av成人无码免费| 在线免费观看日韩一区| 可以在线观看AV的网站| JULIA一区二区三区在线播放| 日本精品无码三级网站| 久久久久成人亚洲国产| 乱色视频中文字幕| 亚洲情色1区| 久久不卡一区二区| h色99999| 久久久免费高清中文视频| 天天看片麻豆| 久久精品无码熟妇一区二区三区视频导航 | 操香逼| 色九月综合| 蜜臀AV成人精品蜜臀AV久久| 97频视在线| 九七毛片九九毛片| 夜夜高潮夜夜爽夜夜爱爱一区| 午夜啊啊| 日本羞羞的视频在线播放| 亚洲色系另类精品国产| 国产日本久久免费精品| 一本一道人妻久久一区二区三区| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 国产免a费看黄片在线| 眼镜人妻101.com| 精品久久久久av影院| 國產尤物AV尤物在線觀看| 国产日本久久免费精品| 女同在线视频一区| 躁躁日曰躁2020| 天美av在线| 国产高清自拍视频| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 欧美激情综合网| 老司机深夜18禁污污网站| 园内精品自拍视频在线播放| 99视频内射三四| www.狠狠干.coom | 欧美成人精品欧美一级乱黄一区二…| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 诱惑网综合| 天天插夜夜操| 97超碰欧美手机| 欧美十八禁视频| 极品色www影院| 丝袜综合色图| 欧美加勒比| 日本视频一区二区三区| 97这里都是精品| 91麻豆天美国产欧美高潮| 26uuu国产亚洲综合| 桃花色涩综合影院| 香蕉免费一区二区三区不读 | 丰满人妻aA一区二区三区| 久久精品店| 日本三级人妻a人妻一在线| 伊人久久亚洲色欲综合网站 | 亚洲综合中文字幕有码| 亚洲综合网图| 91精品操美女| 色色香蕉| 久久久久亚洲一区女同性恋中文字幕| 欧美日韩传媒| 日本三级中国三级99人妇网站| 亚洲天堂第一页| 97亚洲在线| 探花精品视频| 亚春色色| 国内三级自拍小视频在线观看| 久久久久9999妇女| 強姦亂倫a| 操狠狠| 亚洲欧综合另类无码一区| 十八禁网站在线| 久久久久久久久久久久97| 久久久久国产精品片区无码直播| 久久久久78| 午夜无遮挡男女啪啪视频| 后入内射蜜桃臀| 国产精品午夜AV完会免费| 91粉芽高清在线一区二区| 999久久久久久久久| 大伊香蕉在线视频免费| 大香交| 欧美日韩操逼嗦吊| 易易A毛视频| 美女自卫慰黄网站免费| 欧美日韩狠狠爱| 日韩九区| 美女黄网| 天天干夜夜操网| 精品少妇一区二区三区在线视频| 超碰在线1234区| 成人性爱全视频观看| 久久久国产护士丝袜美腿一| 5月婷婷6月六月丁香| 干妹子| 99久久9| 欧美色图亚洲色| 国产少妇与亚洲av| 自拍偷拍国产欧美日韩韩| 五月天伊人| 亚州一区二区成人片免费| 日本孕妇孕交| 久久午夜伦| 无遮挡又黄又刺激的视频| 一区二区三区国产精产| 少妇一区二区三区高速| 伊人视频| av婷婷色网| 国产毛片在线| 啊啊啊啊啊好多水| 2000亚洲男人天堂| 久久婷婷五月天| 亚洲**2021在线观看| 中文字幕日韩专区精品系列| 午夜毛片高清免费不卡| 中文字幕 国产 精品 | 日日噜噜夜夜狠狠视频无| 超碰一区二区| 欧美欲色| www.超碰在线| 三级AV入口| 精品人妻一区二区三区免费视频| 九九英色视频| 91Chinese在线| 91视频伊人| 欧美亚州综合网图片| 有码色中文字幕在线观看| 91干熟女| 操逼片国产| 9久久久久| 91色s| 91偷拍欧美亚洲| 丁香六月综合激情| 国产精品人妻熟女aⅴ| 久久精品区| 老熟妇一区二区三区啪啪| 偷拍欧美综合| 婷婷亚洲综合| 日本污ww视频网站| 欧洲与亚洲欧美精品中文字幕| 狠狠爱综合网| 欧亚性爱啪啪| 国产一区二区三区久久久精品| 国产精品噜噜噜日日日| x97av| 一及黄久一点| 男人兔费天堂| 久久 国产精品 一区| 天天操天天射天天日| 日本操逼无码| juliaann欧美丝袜办公室| 偷拍片久久| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 国产三级日产三级韩国三级| 国内精品久久人妻性色av| 亚洲熟女人妻中文字幕一区二区 | 无码 黑人一区二区三区| 五十路熟女人妻一区二区在线观看 | 99re在线视频这里只有精品| 91熟女视频| 91中出视频| 久久9久久| 亚洲精品九九九九九九| 九色 蝌蚪 熟女自| 超碰这里有精品| 综合性视频99| 超碰视97中文| 欧美精品,四区。五区| 噜噜噜久久亚洲精品色情| 欧美猛交黑寡妇中文字幕| 99999精品成人| 亚洲自拍欧美国产首页网曝| 久久久久久91香蕉国产| 欧美熟女丝袜| 蜜臀久久99精品久久久久久成人小说 | AA级电影三区| 男女猛烈无遮掩视频免费软件| 日韩97P| 精品无码久久久久久久久果冻糖心| 啊v在线观看视频| 久久91| 午夜亚洲WWW湿好大| 美女熟妇色| 综合欧美激情网| 天天日天天干天天整| 无码国产Av| 333kkkk·亚洲com久久| 五月婷婷基地| 亚洲欧美大| 秋霞男人网| 九9热伊人| 亚州,欧美在线| 国产农村妇女精品| 99这里只有精品国产| 熟女精品va中文字幕| 六月丁香婷| 日产国产精品中文久久婷婷| 日影院久久婷婷夜夜网| 日本精品一区二区不卡| 国产激情视频一区区三区| 一级AV性爱| 新精精品久久精品| 91模特在线观看| AV中文字幕三四五| 久久激情四射婷婷丁香五月天| 国产精品无码av在线| 中文字幕av一区二区三区人妻少妇 | 亚洲欧美国产va在线播放频| 久久不卡一区二区| 加勒比日本在线| 午夜福利合集| 自拍偷拍 日韩欧美| 97任你吞精| 久久系列| 亚洲午夜福利视频| 中文字幕丰满人妻日本| 不卡av在线中文字幕| 蜜乳av首页| 加勒比AV网| 2017,超碰| 亚洲 欧美 制服 另类 自拍| 日韩中文字幕二区| 国产中文福利| 欧美日韩午夜精品一区二区三区| 亚州欧美总和| 久久国产精品m码| 狠狠操夜夜| 久久欧美1卡2卡3| 久久久久久久综合,国产| A级在线视频| 精品-91人妻子系列| 伊人一区二区三区| 少妇综合网| 最新中文字幕在线亚洲| 亚洲色资源| 中日无幕一二三四区| 欧美v日韩v亚洲v最新在线| 啊啊啊啊在线观看网址| 久久久久久中文字幕中文字幕最新| AA特级绝黄| 天天享受天天看| 人人妻人人澡人人爽久久av| 激情干在线| 欧美大片天天看| 国产精品一区二区a| 婷婷色色五月天| 青青草在线视频美女| 艹精品| 日日骚 av| 精品欧美不卡在线播放| 人妻啊啊人妻啊啊| 日本Suv精品一区二区| 婷婷情色五月天| 五十路熟女人妻一区二区三区四区五| 无码伊人久久大杳蕉中文无码| 免费超碰97久久| 一区二区三区精品视频| 麻豆一区二区AV天美| 天天综合精品| 精品国模无码| 免费成人在线熟妇网| 玖玖爱免费观看视频| 中文字幕第7页| 精品少妇一区二区三区免费观看| 国产精品爆乳懂色蜜乳| 欧美熟妇人体| 久久久久久久伊人精品| 伦在线97| 草莓精品视频| 粉嫩av一区二区三区天美传媒| 婷婷色影院| 国产熟女一区二区| 久久久工口| 天天操妹子| 激情文学网伊人| 日本人妻丰满熟妇久久久久久| 欧美成人精品一区二区三区| 尤物网址| 中文字幕人乱码中文字的预防方法| 欧美不卡二区| 亚洲第一视频 欧美风情 日韩| 欧美一级黄片免费播放| 熟妇色99| 天堂在线一区二区| 成人三级片无码| 99热这里只有精品18| 国产老熟女| 日韩欧美中文| 欧美丝袜中文字幕07在线| 91在线美女| 亚州操逼图| 97色操| 国产婷婷一区| 色色色99| 国产福利电影| 丝袜加勒比| 欧美很很操视频| 熟女精品日韩一区二区三区| 色爱综合网| 色就色综合| 欧美亚州综合网图片| 99青青草国产视频| 日本国产成人亚洲精品无码| 狠狠操,使劲操| 日本大香蕉综合网| 天操天操夜操夜月月年年操操| 亚洲欧美综合| 日本一卡二区在线| 欧美影音在线| 99re69| 久久女人视频| 国产成人资源| 日产狠狠干| 97人人超| 日韩另类| 2024人人操人人摸| 99久久精品国产高潮| 性影在线视频| 国产一区二区三区视频在线看| 亚洲婷婷丁香在线| 国产精品乱码久久久久| 一本色道熟妇| 亚洲色图欧美色18直播在线| 后入日本1234| 久久久久久久久久久精| 精品二区三四区五电影 | 亚洲综人网| 10000部十八禁看电影| 国产激情在线| 色色色欧美| 日韩精品一区的| 色天欧美| 色综合天天| 翔田千里Av在线| 人人干人人操人人爱| 一区在线精品中文字幕| 亚洲天堂欧美| 人妻少妇久久中文字幕一区二区 麻豆 | 超碰 另类 欧美 | blacked精品一区国产| 亚洲蜜乳av| h4610国产人妻| 亚洲天堂7777| 国产男人又猛又粗又爽| 91人妻最真实刺激绿帽| 亚洲av无码成电影在线播放| 老司机深夜18禁污污网站| 蜜乳中文字幕a在线| 欧美激情视频在线一区| 日韩人妻一二三区视频| 国产92麻豆天美精品色欲5| 熟女人妻一区二区三区| 色色操| 美女露胸露奶头| 免费一级毛片在线视频观看| 精品人妻av区天天看片| 欧洲亚洲人人爽爽视频| 欧美丝袜亚洲| 久久久中文| 人人操我人人干| www国产天美久久久| 久久九九综合| 大香蕉十区| 欧洲亚洲人人爽爽视频| 久久精品电影在线| 日B操| 成人免费福利在线观看| 五月色综合| 婷婷丁香一区二区三区| 5252色欧美在线男人的天堂| 蜜臀久久99精品久久久| 中文字幕亚洲永久精品| 超碰av在线| 中文字幕久久精视频久久大全| 后入式五六区| 亚洲第一页第二页激情| 91小视频| 任我爽视频在线观看| 久久久久久久久国产| 国产黄色av大片网站| 中文字幕在线播放2中文字幕在线观看2 | 一区二区三区四区久久视1| 淫穴高潮色图| 日本操逼aaaaa| 自慰白浆在线观看| 国产一区麻豆免费观看| 欧美色九九| 新久久AV| 青青草视频爽一爽| 九九九九亚洲| 夜夜影视四色| 78久久久| 色悠久| 亚欧韩av| 77国产精品| 老司机福利青青草| 欧美婷婷| 人妻 欧美亚洲| 吖在线不卡一区二区国产剧情| 欧美色婷婷| 欧洲精品区| 亚洲日韩视频二区| 色av中文字| 天美传媒精品久久视频| 国产精品免费日韩| 欧州激情视频在线一区二区| 日日骚中文字幕| 久久露脸国产老熟女| 超碰97久久国| 中文字幕乱码人妻二区三区| 97视频在线免费看| 欧美性91| 91欧美| 亚洲精品蜜桃久久久| 强奸乱伦麻豆| 九九av| 东北女人高潮视频| 中文字幕女同在线| 超碰性爱97| 欧美97爱| 亚洲天堂,男人| 78精品在线| 色人久久| 99在线精品观看视频中文| 无色无码| 久久九九精品一区二区| 亚洲成熟国产精品美女| 精人妻无码一区二区三区伊人直播 | 国产欧美日本亚洲精品| 久久久久中出| 国产无码精品成人| 久久夜色一区二区| 欧美五十路熟| 在线观看视频91| 超碰在线香蕉| 欧美日韩精品青青| 九色婷婷| 日韩色| 高清不卡国产| 岛国福利在线精品播放| 91草草草| 日美免费黄片| 亚洲综合在线91| 成年女人一区| 亚洲日韩精品久久久久一区壹牛 | 国产91福利小视频在线观看| 欧洲中文字幕| 国产精品久久久久无码A√| 亚欧美综合网。| www色日本| 日韩九九九| 97青青操视频| 亚洲一级性爱视频免费看| 欧美在线视频观看一二三四区高清 | 五十路熟女人妻一区二区在线观看 | 久久AV色| 99色在线| 精品亚洲成人免费在线| 制服诱惑亚洲一区二区三区在线观看| 婷婷激情五月天小说网| 午夜美女诱惑电源网| 无码欧美有限公司| 国产高清无码一区三区二区| 羞答答AV中文字| 国语人妻精彩刺激| 人人艹亚洲| 日韩97超碰| 国产日韩精品一区二区三区| 强奸乱伦大香蕉| 欧美亚洲特P| 黄色高清久久无码依人| 8050午夜少妇无码| 秋霞Av理论一级在线| 97国产色图 | 天天综合网在线观看| 自拍欧美| 五月丁香影视| 亚洲国产一区二区入口| 日韩精品一区二区人人人| 国产偷仑| 久草婷婷| www.黄色在线| 亚洲欧美色图| 人妻蜜桃臀| 欧美人妻色| 色欧美天天| 天天视频综合在线观看视频| 天天澡天天爽日日AV| AV男人天堂网| 操b网站亚洲无码| 另类图片五月天| 91快色色色色色| 无码不卡亚洲成?人片| 一本色道久久综合狠狠操| 精品久久久久黄少妇| 毛片电影一区二区三区| 国产日逼视频| 成人线上超碰| 97综合激情| 97网址97| 99色婷婷中文字幕乱色| 你操综合| 亚洲国产第一页综合视频| 日韩丝袜二区| 精品人妻中文字幕4399| 日韩性爱啪啪视频| 超碰在线91| 夜夜夜爽www精品视频| 色臀aV| 最新av在线| 国产农村妇女精品1区二区| 99精品无码| 色婷网| 久久‘黄片视频| www..com操老师| 亚洲国产精品99久久久| 亚洲 小说 欧美 激情 另类| 啊啊啊想要| 天天干嫩逼网| 97超碰超| 96麻豆精品一区二区三区| 蜜臀99久久精品| 狠狠操狠狠燥| 免费男人的天堂| 五月天人妻综合| 蜜臀av网址| 天美麻豆黄色录像| 九九人妻| 大色网久久| 亚洲人妻色图| 91殴美| 99999精品| 日产操逼| 爱妃国产亚洲视频中文字幕| 亚洲一区二区三区春色| 久久国产AⅤ| 性爱视频免费网址| WWW啪啪的com| 欧美日韩国产高清在线一二三区 | 欧美日韩国产电影| 久久精品夜色国产亚洲AV| 91在线/欧洲| 久久精品一区一起草| 综合亚州欧美| 加勒比综合网| 91久精品| 九九英色视频| 日本孕妇孕交| 国产9熟妇视频网站| 亚洲天堂资源在线| 粉嫩av在线| 黄色电影在线播放综合网站| 国产欧美一级在线观看| 久久精品性| 91婷婷伊人狠人| 欧亚久久偷拍视频| 夜夜操夜夜高潮夜夜爽国产精品区| 久草线上视频免费看| 欧美日韩狠狠爱| 欧美第一页| 日本无码1| 床上啊啊啊一区二区三区| 嗯嗯啊啊啊好舒服| 成人黄页| 神马麻豆福利院| 国内毛片无遮挡国产| 自慰白浆在线观看| 伊人影院在线理论播放| 国产久久日| 国产91 丝袜在线播放 | 国产污视频麻豆传媒一区二区| 涩涩久久精品| 天天综合网~91| 精品人妻一区二区视频| AV电影在线播放| 99啪啪| 色区97| 狠狠中文字幕| 激情一区二区三区在线观看| 成人天天看站长推荐| 国际精品久久久| 亚洲h片在线免费观看| 九月丁香婷婷| 青青草字幕AV| 69天堂| 日本精品不卡一二三区| 淫色网综合| 超碰导航97| 日韩欧美成人综合在线| 激情第四色| 啊灬啊灬啊灬啊灬高潮奶出了免费视| www欧美91| 无码av永久免费专区网站| 亚洲图片欧美91N| 中文字幕免费看| 在线中文字幕| 97久久精品亚洲| 国产熟码AV| 亚洲第一精品在线视频 | 一二三四视频中文字幕在线看| 99性爱| 爱丝福利| 精品人妻一区| 亚州色图狠狠干| 男人亚洲天堂| 婷婷五月天伊人| 熟女久久| 亚洲成人性爱在线观看| 精品97久久综合| 国产一国产一级毛片古装| 国产亚洲在线观看| 人妻天天爽夜夜爽2| 日本日逼高清| 麻豆精品A片免费观看| 少妇色| 97久久精品亚洲| 九九热国产| 九九热精品| 中国91AV| 丁香五月性| 四虎精品永久在线观看| 日韩不卡a级视频专区| 国产精品久久久久久久免牛肉蒲团| 九九九精品成人免费视频小说| 国产999精品久久久久久| 久热精品在线| 黄色高清无码无码破解免费暗网 | 天天色综亚洲91污| 中文字幕人乱码中文字的预防方法 | 无码丰满熟妇一区二区浪潮AV| 超碰午夜在线| 日日操免费视频| 天天夜夜久久| 国产女人与拘做受视频免费| 亚洲综合性网址| 国产精品自拍xxxx| 国产成人精品午夜福利| 视频国产精品未满十八禁止在线观看| 久久久久亚洲精品| 黄色AAAAA欧美| 日日日大屁股骚女人精品| 色伊人91| 久久久久久久久女黄| 操一区| 国产精品片| 少妇与黑人高潮在线| 影音先锋新男人| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | a片偷拍视频| 欧美在线55555| 亚洲色图日韩精品| 天美传媒精品久久视频| 日韩三级一区| 乱性AV| 97热视频在线观看| 九九色影院| 天天草夜夜草高潮片| 69国产对白刺激| 欧洲Au麻豆| 国产三级多多影院2022国产AA一级毛片无码| 激情黄色五月天| 久操热线| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 午夜男女爽爽爽在线视频| 91高潮| 中国小夫妻勾搭露脸淫荡对白| 久久久精品视频免费观看| 三及片网站| 亚洲影院小综合| 92人人操人人| 久久大黄片| 2026国产精品视频| 97人人草| 影音先锋日本乱伦| 97在线视频观看免费| 亚洲情色五月天| 国产激情av女片自拍| 97在线看| 人妻大香蕉| 有码免费观看| 欧美综合区| 超碰日韩人妻| 久久日韩肥臀| 国产精品第二页| 夜夜一区二区| 亚洲av综合色区无码一| 一区二区不卡视| 99日免费视频中文字幕| 曰韩精品九九无码| 欧美不卡二区| 人人么人人操| 91日韩网站| 天天干人妻| 亚洲熟妇图片| 日韩av乱伦| 亚洲成人日韩小说| 亚洲综合电影| 青青操在线视频| 国产第二页| 亚洲日韩青青草色月| 婷色五月天| 日韩精品在线观看网站| www.yeyecao| 啊啊啊好多水| 91情色在线| 91九色丰满高潮| 超碰98综合网| 91jk色拍| 欧美中文字幕男人天堂久久精品 | 亚洲se91| 午夜福利合集| 97伦乱| 91老熟女老女人国产老太| 任我爽视频在线观看| 日本免费中文一区二区三区四区 | 巨爆乳肉感一区二区三区竹菊影视 | 欧美日韩日产免费网站看| 天天看夜夜看日日干| 色97干| 欧美劲爆第一页| 97操B| 精品人妻高清麻豆av| 一区二区亚州激情久婷婷欧美| 精品然女一区二区| 动漫片子网站3黄| 区一在线观看| 久久久亚洲精品电影免费看| 男人的天堂2010| 中文字幕五区| 天天干少妇| 啊啊啊啊嗯嗯嗯用力好爽| 国产激情久久久| 色五月综合网| 婷婷啪啪| 中文字幕在线观看丝袜| 中文字幕精品一区二区精品| 99热| 91蜜臀在线久久久久| 玖玖人人爱| 久久久久久久久一区二区三区| 婷婷综合视频| 99999精品成人| 操人妻少妇中文| 97香焦色区| 免费的av网| 97在线欧洲| 久噜噜| 日韩精品一区,二区 九九...老司机| 日日干男人的天堂| 岛国不卡超碰护士AV在线播放| 国产风韵犹存熟妇三区| 9ⅰ久久久天天| 91综合天天| 国产免费一区2区3区|