亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

Hive 3.1.2 UDF開發(fā)避坑指南:從環(huán)境配置到GenericUDF實(shí)踐

Hive 3.1.2 UDF開發(fā)避坑指南:從環(huán)境配置到GenericUDF實(shí)踐 Hive 3.1.2 版本做 UDF 開發(fā)是個(gè)挺容易踩坑的活兒。網(wǎng)上很多教程還停留在 Hive 1.x/2.x 的老寫法照著做大概率會(huì)碰到類沖突、方法簽名不識(shí)別這類問(wèn)題。我自己在 3.1.2 上踩了一輪坑之后把完整流程和避坑點(diǎn)整理出來(lái)希望能幫你少走彎路。1. 開發(fā)前的環(huán)境認(rèn)知與版本陷阱1.1 為什么要專門強(qiáng)調(diào) 3.1.2 版本Hive 3.1.2 是 Hive 3.x 系列里比較穩(wěn)定的一個(gè)版本很多公司的生產(chǎn)環(huán)境都在用。但這個(gè)版本和 2.x 相比有幾個(gè)直接影響 UDF 開發(fā)的底層變化依賴的 Hadoop 版本升級(jí)到了 3.x 系列導(dǎo)致一些老的 hive-exec 依賴寫法會(huì)出現(xiàn) NoSuchMethodError。引入了更嚴(yán)格的 SQL 標(biāo)準(zhǔn)合規(guī)檢查對(duì)函數(shù)注冊(cè)和調(diào)用的方式有影響。移除了部分 deprecated 的 API比如舊的UDF類雖然保留但GenericUDF的初始化流程有細(xì)微差別。Hive 3.x 默認(rèn)使用 LLAP 和新的執(zhí)行引擎UDF 在本地調(diào)試和集群運(yùn)行時(shí)的類加載機(jī)制不完全一樣。這些變化意味著如果你直接搜網(wǎng)上 Hive UDF 教程 然后復(fù)制代碼大概率會(huì)在打包或者運(yùn)行時(shí)碰到各種詭異報(bào)錯(cuò)。1.2 Maven 依賴的正確配置方法在 Hive 3.1.2 下開發(fā) UDF最穩(wěn)妥的 Maven 依賴配置是這樣dependency groupIdorg.apache.hive/groupId artifactIdhive-exec/artifactId version3.1.2/version scopeprovided/scope /dependency dependency groupIdorg.apache.hadoop/groupId artifactIdhadoop-common/artifactId version3.1.0/version scopeprovided/scope /dependency幾個(gè)關(guān)鍵點(diǎn)解釋一下scope必須設(shè)置為provided因?yàn)?Hive 集群環(huán)境本身已經(jīng)有這些 jar 了。如果打成 fat jar 把這些依賴打進(jìn)去極大概率會(huì)引發(fā)類沖突出現(xiàn)ClassNotFoundException或者奇怪的序列化錯(cuò)誤。Hadoop 版本不一定要跟 Hive 自帶的一模一樣3.1.0和3.1.1通常兼容。但如果業(yè)務(wù)方指定了 Hadoop 版本以實(shí)際環(huán)境為準(zhǔn)。如果你在代碼里用到org.apache.hadoop.hive.ql.exec.UDF還需要確認(rèn)hive-exec沒(méi)有被其他傳遞依賴干擾。建議在pom.xml里加exclusions把hive-common、log4j等排除掉避免和集群自帶的沖突。提示不要用hive-udf這種單獨(dú)的 artifactId 名稱那是老版本的方案3.x 下直接在hive-exec里就有完整的 UDF API。1.3 本地開發(fā)環(huán)境的 JDK 選擇Hive 3.1.2 官方推薦 JDK 是 Java 8本地開發(fā)也盡量用 JDK 8。如果你用 JDK 11 或 17 編譯雖然有些功能能跑但集群上如果還是 JDK 8 的環(huán)境運(yùn)行時(shí)容易出現(xiàn)UnsupportedClassVersionError。建議開發(fā)機(jī)裝一個(gè) JDK 8Maven 的pom.xml里加編譯參數(shù)properties maven.compiler.source1.8/maven.compiler.source maven.compiler.target1.8/maven.compiler.target /properties2. UDF 開發(fā)的兩種核心寫法與適用場(chǎng)景2.1 繼承 UDF 類的簡(jiǎn)單寫法這是最簡(jiǎn)單的一種方式適用于輸入輸出都是一對(duì)一的場(chǎng)景比如字符串處理、數(shù)值計(jì)算。package com.example.hive.udf; import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.io.Text; public class MaskPhone extends UDF { public Text evaluate(Text phone) { if (phone null) { return null; } String value phone.toString(); if (value.length() 7) { return new Text(value); } String masked value.substring(0, 3) **** value.substring(7); return new Text(masked); } }這個(gè)方法就干了件很典型的事把手機(jī)號(hào)中間四位脫敏。整個(gè)處理邏輯很直接方法就是evaluateHive 引擎會(huì)根據(jù)參數(shù)類型自動(dòng)找到對(duì)應(yīng)的方法。UDF基類的作用是幫你解決反射匹配那部分繁瑣的內(nèi)容自己只需要關(guān)心業(yè)務(wù)實(shí)現(xiàn)。這里有個(gè)小細(xì)節(jié)返回值最好用 Hadoop 的Text類型而不是 Java 的String。雖然Text也能轉(zhuǎn)成String但用Text在很多場(chǎng)景下性能更好。如果你返回 Java 基礎(chǔ)類型比如int、doubleHive 也能處理但會(huì)出現(xiàn)序列化層面的隱式轉(zhuǎn)換數(shù)據(jù)量大的時(shí)候差距能感覺(jué)到。2.2 繼承 GenericUDF 的高級(jí)寫法簡(jiǎn)單UDF在處理復(fù)雜類型如struct、map、array或者需要做參數(shù)個(gè)數(shù)校驗(yàn)時(shí)就比較吃力。這時(shí)候需要GenericUDF。package com.example.hive.udf; import org.apache.hadoop.hive.ql.exec.UDFArgumentException; import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException; import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.udf.generic.GenericUDF; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils; import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory; import org.apache.hadoop.hive.serde2.objectinspector.primitive.StringObjectInspector; import org.apache.hadoop.io.Text; public class GenericMaskPhone extends GenericUDF { private StringObjectInspector stringOI; Override public ObjectInspector initialize(ObjectInspector[] arguments) throws UDFArgumentException { if (arguments.length ! 1) { throw new UDFArgumentLengthException(GenericMaskPhone 需要恰好 1 個(gè)參數(shù)你傳了 arguments.length 個(gè)); } if (arguments[0].getCategory() ! ObjectInspector.Category.PRIMITIVE || !(arguments[0] instanceof StringObjectInspector)) { throw new UDFArgumentTypeException(0, 參數(shù)類型錯(cuò)誤第一個(gè)參數(shù)需要是 STRING 類型); } stringOI (StringObjectInspector) arguments[0]; return PrimitiveObjectInspectorFactory.writableStringObjectInspector; } Override public Object evaluate(DeferredObject[] arguments) throws HiveException { if (arguments[0] null || arguments[0].get() null) { return null; } String value stringOI.getPrimitiveJavaObject(arguments[0].get()); if (value.length() 7) { return new Text(value); } return new Text(value.substring(0, 3) **** value.substring(7)); } Override public String getDisplayString(String[] children) { return GenericMaskPhone( children[0] ); } }GenericUDF的三個(gè)方法各有分工initialize在函數(shù)第一次執(zhí)行時(shí)被調(diào)用用來(lái)確定參數(shù)類型、校驗(yàn)參數(shù)個(gè)數(shù)并定義返回值的類型。這里的返回值從ObjectInspector來(lái)描述既是給引擎看的元數(shù)據(jù)信息也是后續(xù)處理數(shù)據(jù)的依據(jù)。evaluate是真正處理數(shù)據(jù)的核心每行數(shù)據(jù)都會(huì)調(diào)用一次。getDisplayString用于展示函數(shù)調(diào)用形式在 explain 語(yǔ)句和日志中會(huì)用到格式不嚴(yán)謹(jǐn)也沒(méi)關(guān)系但不能返回 null。很多新人在initialize里容易犯一個(gè)錯(cuò)以為可以在這里拿到數(shù)據(jù)。實(shí)際上這里只拿類型信息數(shù)據(jù)在evaluate里才能拿到。把ObjectInspector緩存下來(lái)就是為了在evaluate里高效地讀取數(shù)據(jù)。2.3 兩種寫法的選型建議做一個(gè)簡(jiǎn)單的對(duì)比對(duì)比項(xiàng)繼承 UDF繼承 GenericUDF代碼量少只需寫 evaluate多要寫三個(gè)方法參數(shù)類型校驗(yàn)松散靠反射匹配嚴(yán)密可在 initialize 中精確控制復(fù)雜類型支持有限完全支持 struct/map/array性能略差更優(yōu)Debug 友好度簡(jiǎn)單較復(fù)雜需要理解 ObjectInspector我的經(jīng)驗(yàn)是處理基本類型、邏輯簡(jiǎn)單的場(chǎng)景直接用簡(jiǎn)單UDF就好代碼可讀性好。但如果你需要處理嵌套結(jié)構(gòu)或者要檢查參數(shù)個(gè)數(shù)、按不同類型選擇不同的處理分支GenericUDF在復(fù)雜場(chǎng)景下更有優(yōu)勢(shì)排查問(wèn)題也更直觀。3. 完整實(shí)操?gòu)拇a到集群運(yùn)行3.1 測(cè)試用例的編寫技巧很多開發(fā)者在本地寫完 UDF 之后直接扔到集群上測(cè)試結(jié)果一執(zhí)行就報(bào)錯(cuò)來(lái)回調(diào)試的成本特別高。其實(shí)在本地用 JUnit 寫一個(gè)測(cè)試用例幾分鐘就能驗(yàn)證大部分邏輯問(wèn)題。package com.example.hive.udf; import org.apache.hadoop.io.Text; import org.junit.Assert; import org.junit.Test; public class MaskPhoneTest { Test public void testNormal() { MaskPhone udf new MaskPhone(); Text result udf.evaluate(new Text(13812345678)); Assert.assertEquals(138****5678, result.toString()); } Test public void testNull() { MaskPhone udf new MaskPhone(); Assert.assertNull(udf.evaluate(null)); } Test public void testShortLength() { MaskPhone udf new MaskPhone(); Text result udf.evaluate(new Text(123456)); Assert.assertEquals(123456, result.toString()); } }測(cè)試重點(diǎn)覆蓋三類情況正常輸入、空值、邊界值。特別是空值很多 UDF 在這上面崩潰過(guò)——用戶在 SQL 里寫where column is not null過(guò)濾掉了一部分但 UDF 內(nèi)部還是要做好防御。測(cè)試的依賴在 pom.xml 中加上dependency groupIdjunit/groupId artifactIdjunit/artifactId version4.13.2/version scopetest/scope /dependency3.2 打包與上傳 HDFS本地測(cè)試通過(guò)之后執(zhí)行mvn clean package -DskipTests打包。輸出 jar 一般不大幾百 KB 到幾 MB 都正常。把 jar 上傳到 HDFS 的常見(jiàn)做法hdfs dfs -mkdir -p /udf/lib hdfs dfs -put mask-udf-1.0.jar /udf/lib/為什么要放 HDFS 而不是直接放本機(jī)因?yàn)?Hive 集群可能是多節(jié)點(diǎn)如果只放在提交任務(wù)的節(jié)點(diǎn)上其他節(jié)點(diǎn)執(zhí)行時(shí)找不到 jar就會(huì)報(bào)ClassNotFoundException。放在 HDFS 上所有節(jié)點(diǎn)都能加載。這是個(gè)經(jīng)典坑務(wù)必注意。3.3 永久函數(shù)與臨時(shí)函數(shù)注冊(cè)在 Hive 3.1.2 中臨時(shí)函數(shù)的注冊(cè)方式ADD JAR hdfs:///udf/lib/mask-udf-1.0.jar; CREATE TEMPORARY FUNCTION mask_phone AS com.example.hive.udf.MaskPhone;臨時(shí)函數(shù)只在當(dāng)前會(huì)話有效斷開會(huì)話就失效適合開發(fā)測(cè)試階段使用。要在生產(chǎn)環(huán)境長(zhǎng)期使用建議注冊(cè)為永久函數(shù)CREATE FUNCTION mask_phone AS com.example.hive.udf.MaskPhone USING JAR hdfs:///udf/lib/mask-udf-1.0.jar;注意永久函數(shù)的創(chuàng)建可能需要管理員權(quán)限如果當(dāng)前用戶沒(méi)有權(quán)限會(huì)報(bào)AuthorizationException。如果自己不是管理員可以讓 DBA 幫忙或者把 jar 的權(quán)限放開到 HDFS 上允許讀。Hive 3.1.2 里函數(shù)名最好不要帶橫線或點(diǎn)會(huì)跟一些內(nèi)部命名沖突。用下劃線連接是最穩(wěn)妥的寫法。3.4 實(shí)際調(diào)用驗(yàn)證注冊(cè)完成之后執(zhí)行一條 SQL 驗(yàn)證SELECT mask_phone(13812345678);正常結(jié)果應(yīng)該輸出138****5678。再試一下空值場(chǎng)景SELECT mask_phone(null);應(yīng)該返回NULL而不是報(bào)錯(cuò)。順便可以驗(yàn)證一下在WHERE條件中使用 UDF 的效果SELECT id, phone FROM user_phone WHERE mask_phone(phone) 138****5678;到這里簡(jiǎn)單 UDF 的基本流程就算跑通了。4. 進(jìn)階GenericUDF 初始化與常量折疊問(wèn)題4.1 initialize 方法里的參數(shù)校驗(yàn)細(xì)節(jié)很多復(fù)雜的 bug 都出在initialize方法上。有些場(chǎng)景下 UDF 的入?yún)⒖赡苁浅A恳部赡苁亲侄?。ObjectInspector拿到的是類型描述而不是具體數(shù)值。在initialize里做校驗(yàn)時(shí)要格外注意不要嘗試讀取參數(shù)值只做類型和數(shù)量檢查。比如要處理兩個(gè)參數(shù)第一個(gè)是字符串第二個(gè)是整數(shù)可以這樣校驗(yàn)Override public ObjectInspector initialize(ObjectInspector[] arguments) throws UDFArgumentException { if (arguments.length ! 2) { throw new UDFArgumentLengthException(需要兩個(gè)參數(shù)); } if (arguments[0].getCategory() ! ObjectInspector.Category.PRIMITIVE) { throw new UDFArgumentTypeException(0, 第一個(gè)參數(shù)必須是基本類型); } PrimitiveObjectInspector poi0 (PrimitiveObjectInspector) arguments[0]; PrimitiveObjectInspector poi1 (PrimitiveObjectInspector) arguments[1]; if (poi0.getPrimitiveCategory() ! PrimitiveObjectInspector.PrimitiveCategory.STRING) { throw new UDFArgumentTypeException(0, 第一個(gè)參數(shù)必須是 STRING); } if (poi1.getPrimitiveCategory() ! PrimitiveObjectInspector.PrimitiveCategory.INT) { throw new UDFArgumentTypeException(1, 第二個(gè)參數(shù)必須是 INT); } return PrimitiveObjectInspectorFactory.writableStringObjectInspector; }注意這里用的getPrimitiveCategory()是更細(xì)粒度的類型判斷。STRING和CHAR、VARCHAR是不同的類別但某些場(chǎng)景下你可能希望同時(shí)接受它們。這種取舍要根據(jù)業(yè)務(wù)需求來(lái)定。4.2 常量折疊帶來(lái)的“詭異”現(xiàn)象Hive 3.1.2 的優(yōu)化器會(huì)在某些情況下做常量折疊。什么意思呢如果你執(zhí)行SELECT mask_phone(13812345678)引擎可能在你還沒(méi)進(jìn)入真正的 UDF 執(zhí)行前就把參數(shù)作為常量推導(dǎo)出結(jié)果了。這種情況下initialize可能根本不會(huì)被調(diào)用或者只調(diào)用一次。這種優(yōu)化通常不會(huì)影響最終結(jié)果但如果你在 UDF 里寫了static變量想保存狀態(tài)就需要注意不要依賴evaluate的調(diào)用次數(shù)。比如用static int count統(tǒng)計(jì)共處理了多少行在常量折疊下統(tǒng)計(jì)結(jié)果可能不準(zhǔn)確。4.3 UDF 中的狀態(tài)管理規(guī)范Hive 的 UDF 是被多線程并發(fā)調(diào)用的。同一個(gè) UDF 實(shí)例可能同時(shí)被多個(gè) mapper/reducer 線程使用因此不要在 UDF 里使用非線程安全的成員變量比如SimpleDateFormat。不要用成員變量保存行級(jí)狀態(tài)比如lastValue這種。如果確實(shí)需要線程安全的格式化工具在initialize里創(chuàng)建局部變量或者用ThreadLocal。踩過(guò)坑的開發(fā)者都知道這類并發(fā)問(wèn)題在測(cè)試階段很難發(fā)現(xiàn)通常要到數(shù)據(jù)量大了之后突然報(bào)錯(cuò)排查起來(lái)相當(dāng)痛苦。5. 三個(gè)最容易踩的運(yùn)行時(shí)坑5.1 ClassNotFound 與依賴沖突這是出現(xiàn)頻率最高的問(wèn)題。打包時(shí)如果用了maven-shade-plugin把 Hive 依賴打進(jìn)了 fat jar運(yùn)行時(shí)就會(huì)出現(xiàn)一個(gè)詭異的現(xiàn)象本地測(cè)試正常上傳集群就報(bào)錯(cuò)。典型報(bào)錯(cuò)信息java.lang.NoSuchMethodError: org.apache.hadoop.hive.ql.exec.UDF.evaluate解決思路把pom.xml中hive-exec的scope改成provided同時(shí)確保打的是瘦 jar。如果確實(shí)有特殊依賴需要打包用 shade 插件盡量排除org.apache.hive和org.apache.hadoop相關(guān)包名。另一個(gè)思路是直接用 Hive 的ADD JAR把額外的依賴 jar 加載進(jìn)來(lái)ADD JAR hdfs:///udf/lib/commons-lang3.jar; ADD JAR hdfs:///udf/lib/guava-27.0-jre.jar;注意優(yōu)先級(jí)問(wèn)題后添加的 jar 可能覆蓋先添加的。同一份依賴集群自帶的版本和 jar 里的版本不一致時(shí)容易引發(fā)沖突。避免這種問(wèn)題的最佳做法就是別在 UDF 里用和 Hive 核心依賴重疊的開源庫(kù)迫不得已時(shí)要精心管理類加載順序。5.2 返回 null 時(shí)引發(fā)的 NPEHive 里遇到null是家常便飯。UDF 里的evaluate方法如果收到null參數(shù)而代碼里沒(méi)做判空很容易 NPE。我見(jiàn)過(guò)的最隱蔽 NPE 是這么出現(xiàn)的public Text evaluate(Text a, Text b) { if (!a.toString().equals(b.toString())) { return new Text(not_equal); } return new Text(equal); }看著沒(méi)問(wèn)題但如果a為 null調(diào)用a.toString()就 NPE 了。更麻煩的是Hive 引擎有時(shí)會(huì)把空字符串和 null 混在一起行為難以預(yù)測(cè)。建議在方法最開始統(tǒng)一判空if (a null || b null) { return null; }5.3 類型隱式轉(zhuǎn)換導(dǎo)致的結(jié)果異常Hive 3.1.2 對(duì)類型轉(zhuǎn)換有一套規(guī)則。比如你寫mask_phone(phone)而phone是varchar(20)而不是string簡(jiǎn)單 UDF 的反射機(jī)制可能匹配不到對(duì)應(yīng)的evaluate方法要么報(bào)錯(cuò)要么是類型轉(zhuǎn)換消耗額外時(shí)間。更隱蔽的問(wèn)題是精度丟失比如 UDF 參數(shù)用Double而傳入的是高精度的DecimalHive 會(huì)轉(zhuǎn)成 double 進(jìn)行處理可能丟掉精度。處理金額類數(shù)據(jù)時(shí)尤其小心盡量用BigDecimal或Text來(lái)確定性的字符串處理。6. 性能調(diào)優(yōu)與 UDF 編寫規(guī)范6.1 避免不必要的對(duì)象創(chuàng)建每行數(shù)據(jù)都調(diào)用evaluate如果每次都new一個(gè)StringBuilder或ArrayList在大數(shù)據(jù)量下就是海量對(duì)象創(chuàng)建GC 壓力飆升。更優(yōu)的寫法是在GenericUDF里把可重用的Object作為成員變量緩存起來(lái)前提是線程安全或者直接復(fù)用輸入的Text對(duì)象。在簡(jiǎn)單 UDF 中如果必須返回字符串盡量少做無(wú)意義的拼接可以用StringBuilder的鏈?zhǔn)秸{(diào)用減少中間對(duì)象。6.2 分段處理與空值短路把復(fù)雜的 UDF 拆成多個(gè)簡(jiǎn)單函數(shù)往往比一個(gè)超級(jí)函數(shù)更高效。因?yàn)?Hive 的謂詞下推和列剪枝能幫你過(guò)濾掉很多不需要計(jì)算的行。數(shù)據(jù)量大時(shí)空值短路很重要。如果 UDF 檢測(cè)到某個(gè)字段為 null直接返回 null后續(xù)的復(fù)雜邏輯就不用執(zhí)行了。這樣既避免 NPE又能減少不必要的計(jì)算。7. 常見(jiàn)問(wèn)題速查表報(bào)錯(cuò)信息可能原因解決方案ClassNotFoundException: com.example.hive.udf.MaskPhonejar 未加載或路徑不對(duì)確認(rèn) ADD JAR 是否執(zhí)行jar 是否在 HDFS 上NoSuchMethodError: evaluatehive-exec 依賴沖突引入了錯(cuò)誤的版本檢查 pom.xml scope 是否為 provided清理 fat jarUDFArgumentException: 參數(shù)類型錯(cuò)誤initialize 中的類型校驗(yàn)過(guò)于嚴(yán)格檢查參數(shù)類別確認(rèn) STRING 與 VARCHAR 的區(qū)別AuthorizationException當(dāng)前用戶無(wú)創(chuàng)建永久函數(shù)權(quán)限聯(lián)系管理員授權(quán)或用臨時(shí)函數(shù)代替UnsupportedClassVersionError本地編譯 JDK 版本高于集群 JDK統(tǒng)一使用 JDK 8 編譯檢查 maven compiler 配置SemanticsException: Function is not registered創(chuàng)建函數(shù)的庫(kù)名不是當(dāng)前庫(kù)使用 db_name.function_name 顯式指定查詢結(jié)果為空但日志無(wú)報(bào)錯(cuò)常量折疊或 null 短路導(dǎo)致 UDF 未執(zhí)行檢查執(zhí)行計(jì)劃 EXPLAIN確認(rèn) UDF 是否被下推8. UDF 擴(kuò)展方向與調(diào)試建議8.1 從 UDF 到 UDTF 和 UDAFUDF 是一進(jìn)一出UDTF 是一進(jìn)多出比如把一行拆成多行UDAF 是多進(jìn)一出聚合函數(shù)比如自研 sum。如果業(yè)務(wù)上需要把 JSON 數(shù)組字段展開成多行就需要寫 UDTF這屬于GenericUDTF的范疇。UDAF 的情況更復(fù)雜一點(diǎn)Hive 3.1.2 推薦直接繼承AbstractGenericUDAFResolver和實(shí)現(xiàn)GenericUDAFEvaluator中間設(shè)計(jì)到Mode狀態(tài)機(jī)PARTIAL1、PARTIAL2、FINAL、COMPLETE不同階段對(duì)應(yīng)不同的iterate、merge、terminate方法回調(diào)。這塊建議單獨(dú)開項(xiàng)目不要在簡(jiǎn)單 UDF 基礎(chǔ)上改動(dòng)。8.2 Debug 技巧日志輸出定位問(wèn)題集群環(huán)境不好打斷點(diǎn)大部分 UDF 問(wèn)題靠日志定位。Hive 的LogHelper可以輸出到 Hive 日志中import org.apache.hadoop.hive.ql.log.PerfLogger; // 或者使用 slf4j private static final Logger LOG LoggerFactory.getLogger(MaskPhone.class); Override public Object evaluate(DeferredObject[] arguments) throws HiveException { if (LOG.isDebugEnabled()) { LOG.debug(參數(shù)值: arguments[0].get()); } // 業(yè)務(wù)邏輯 }日志級(jí)別在log4j2.properties或hive-log4j2.properties里配置。調(diào)成 DEBUG 后跑一條小數(shù)據(jù)量的 SQL就能看到 UDF 的輸入輸出。查到問(wèn)題后記得切回 WARN 級(jí)別避免日志量把集群磁盤打滿。我在實(shí)際開發(fā)過(guò)程中最后悔的一件事就是最開始沒(méi)養(yǎng)成良好的判空習(xí)慣導(dǎo)致上線后遇到空值 NPE還得緊急改版本重新打包。另外每次改完 UDF 記得清掉 Hive 的緩存有時(shí)候函數(shù)注冊(cè)信息在 session 里是帶緩存的重新注冊(cè)同名函數(shù)時(shí)可能調(diào)用的還是舊版本。這種情況可以DROP FUNCTION后重新CREATE或者重啟 beeline 再試。這個(gè) UDF 項(xiàng)目后續(xù)很好擴(kuò)展同一套框架下可以繼續(xù)封裝字符串脫敏系列身份證、郵箱、銀行卡號(hào)、JSON 解析系列、時(shí)間處理系列打包成同一個(gè) jar注冊(cè)一批函數(shù)形成團(tuán)隊(duì)內(nèi)部的自研函數(shù)庫(kù)開發(fā)和維護(hù)成本都會(huì)明顯降下來(lái)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美亚洲清纯| 国产高清成人传媒影视| 蜜桃久久精品一区二区三区| 亚洲福利中文字幕在线| 日韩无码精品综合久久| 中日韩久久久免费看| 一区二区 韩日AV| 四虎影视永久在线免费| 久久在肏| 欧美日日人人天天| 欧美久久人妻少妇一区二区| 97欧美精品综合| 日操粉逼逼| 综合第一页| 欧美曰韩国产精品| 亚洲情色1区| 操操啪| 在线观看无码三级少妇| 久草新在线| 91色艳| 99精品在线播放| 久久精品久久九九精品| 18禁无码永久免费无限制| 91中出在线| 熟女一区二区| 日本不卡二三区| 婷婷综合五月天| 国产在线视频二区| 日韩精品在线观看观看| 一区二区三区免费视频入口| 9国产超碰| 四虎免费在线观看| 三及片网站| 激情久久日韩精品中文字幕麻豆| 亚洲偷拍欧美激情| 成人性交免费视屏| 国产精品熟女一区二区三区| 欧美女同在线| 九九热在线精品视频| 亚洲高清内射| 99热国产| 亚洲综合嫩| 欧美日韩另类字幕中文| 久久久久久91香蕉国产| 午夜福利区| 96AV精品| 97操操| 精品国产乱码久久久久久久久1| 黑人精品成人一区二区三区| 九九热九九| 99热只有这里有精品| av强奸乱轮| 操高情无码| 国产人妻天天干精品| 手机在线中文字幕国产| 国产精品老师| 人人操AV| 麻豆激情综合| 长久操视频| 青青草一区二区三区四| 欧州91高潮| 九七超碰| 日韩免费福利在线观看| 睡产熟女乱伦| 日本一区二区三区欧美日韩中文字幕| 啊啊啊啊在线观看网址| 久久久熟女一区| 精品日韩人妻视频| 国产精品免费久久久久久久久久| 国产精品久久妻无码网站| 国产精品视频91久久| 国产成人午夜视频网址| 91精品黄在线观看| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 又黄又粗又硬又长又大| 日日日大屁股骚女人精品| 激情欧美日韩女同久久| 变态综合色| 亚洲国产成人精品女人久久久| 美日韩男女操屄视频| 国产精品久久久久久片| 久久久久骚| 淫乱图区| 九久精品| 操操逼操操逼操操逼逼| 日本伦理一区二区| 日本免费二区三区| 激情五月天社区| 99re6久热只有精品6在线直播 | 久久精品国产精品一区| 日本黄 R色 成 人网站| 亚洲美欧999| 91白嫩| 亚洲一区中文精品| 五月婷婷AV| 美女网站黄页| AA级电影三区| 黄色十八禁网站| 91狠狠综合久久| 男女性感激情网站| 欧美色女人| 2017人人操,人人摸| 日韩中文字幕视频在线观看| 久草新免费| 蜜臀99久| 亚欧韩av| 亚洲天堂一区二区| 97资源视频| 国产AV久久久蜜爱影集| 欧美在线第五页| 看日韩黄片| 大香蕉婷婷| 精品美女久久一二三| 综合97| 九九热精品在线| 91性感网站| 国产高清成人免费视频| 日韩三级在线观看mp4| 老熟女综合网| 精品久久久久,69国产成人精| 后入福利视频| 久久青青草原免费视频| 久久久九精品| 激情五月天插| av橘色网站| 黄色小视频日本txt| 亚洲自拍一区夜夜操| 少妇高潮流水av免费| 后X久久| 78精品在线| 天天色综亚洲91污| 91无摭挡| 国产热RE99久久6国产精品首| 偷拍色图| 久久久国产成人一区二区三区在线| 久久精品99| 在线免费观看日韩一区| 96一区二区三区| 日本午夜久久电影| 校园春色美腿丝袜 | 久久久婷婷| 在线无码视频| 无码男人天堂| 91粉嫩萝控精品福利网站_精品影音先锋国 | 好涩综合| 国产超碰国产97| 人人妻人人澡人人爽久久av| 91精品婷婷国产综合久久竹菊| 91原创在线观看| 97av在线观看| 一区二区蜜臀| 成人性爱高清视频免费看| 人人妻人人操人人乐| 中文字幕在线观看网址| 干b在线性社区| 久久久久九九九| 国产美女高潮视频| 男人的天堂VA在线| 天天做天天爱天天高潮| 亚洲日韩在线a不卡99精品 | 国产中文精品一区二区在线观看| 亚洲伊人青青草| 久久99热这里只频精品6学生| 人妻色偷色噜| 精品人妻15区| 少妇内射www在线观看视频| 日韩九区| 精品国产一区二区三区四区在线看 | 黄色污污污污污污网站| 欧美一区二区三区互相| 老熟乱一区二区三区四区| 天堂精品在线| av网站国产主播在线| 亚洲日韩熟女人妻高清在线| 国产久久一区二区午夜| 在线一道啪| 久久999久| 久久久久久久久久久久色网| 久久久久婷婷| 国产精品盗摄 偷窥盗摄| 欧美72网页| 欧美日韩性爱精品| 蜜臀久久99精品久久久久久无删减 | 啊啊啊啊啊啊啊在线| 99久久久无码国产精品性男| 91天天综合日韩欧美| 久久久99久9| 无码精品人妻一区二区三区妖精| 激情另类激情| 午夜精品久久久久久久99热影院| 亚洲人妻中文高清| 男人天堂网址| 亚洲交换| 久久久久网站-538在线视频-欧美永久乱码| 天天做日日做| 91网站18| 久久久青青草| 久久超碰av在线| 欧美图片色综合| 国产精品一区二区黄片| 色路综合| 亚洲日精品| 美女诱惑在线一区| 欧美内射少妇| 伊人影院在线理论播放| 人人爱操| 男女一级A片大黄,一进一出| 国产精品色片一区二区| 日韩av性爱在线播放| 欧美色道啊| 97爱综合| julia ann久久| 97在线精品| 欧美综合色站| 亚洲色性| 亚洲日韩视频二区| 亚洲AV免费在线| 欧美翘臀视频网站一区二区三区| 91综合中文字幕| 九九热超碰97亚洲最新香蕉| 欧美日本久久精品一区 | 日本天堂在线播放| 91久久18禁| 欧美色乱| 日韩人妻一区二区精品| 熟女91网站| 人乳av| 亚洲熟女av中文字幕| 国产妇女精品视频青青草| 无码逼| 亚洲精品精品一区二区| 精品久热| 玖玖资源中文字幕制服丝袜| 黄色不卡视频| 人妻人久久精品中文字幕| 高清无码91| 亚洲欧美综合| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 欧美性xxxxx狂欢| 性91| 很黄很色的视频在线观看| 亚洲精品啪视频| 久久亚洲不卡| 久久精品女同亚洲女同13| 欧美天天干| 天天做日日做| 国产乱码久久| 91天堂丝袜美腿| 手机午夜电影神马久久| 性爱乱伦一区| 色爱综合网欧美| 久久久久久无码人妻中文字幕| 亚洲色入欧美| 一级性爱网| 婷婷色中文字幕| 偷拍在线观看视频| 97欧美在线| 自拍欧美| 天天网综合| 青青在线视频免费| 秋霞午夜成人福利片片| 色婷婷六月| 亚洲91大片| 色噜噜日韩精品| 日韩黄色电影网站| 超碰 av 女人天堂| 毛片99-全集电影手机免费观看完整-B029AV | 加勒比伊人综合| 欧美精品久久96人妻无码| 国产一区二区三区久久久精品| 综合熟妇一区二区三区| 97超碰天天爱天天爱| 国产吹潮女在线观看| 青青草中文-久久青草精品一区二区三 | 亚乱色| 超碰97综合网| 国产熟女免费观看久久| 无码九九| 亚洲综合激情五月久久| 小骚逼被操的爽不爽| 乱伦色图网址是多少| 白丝jkav| 黄色视频特级毛片| 992视频一区| 中美日韩毛片| 国产亚州高清国产拍精| 骚货操死你| 操九九九九九九| 在线岛| 91老妇女| 国模不卡一本二本三电影| 久久久999国产精品| 天天日B夜夜干B时时操B| 2017天天操| 亚洲欧美精品一区天堂久久 | 思思热免费视频观看| 国产精品一区二区三区四区五区| 亚洲第一页欧美| 久久夜黄色无码A级大片| 黄色工厂这里只有精品| 欧美色图成人网一区二区| 国产精品免费久久久久久久久久| 久草婷婷| 亚洲欧美在线观看2021| 亚洲一二三四区在线免费看视频| 高清在线不卡一区二区 视频| 久久亚洲不卡一区二区三区| 国内毛片无码一级毛片| 99色热国产视频精品| 国产97在线视频| 久久青娱乐| 天堂伊人久久| 热久久无毒不卡| 天天内射| 26uuu国产| 免费看黄片现成| 一区二区三区男女操逼黄色小电影| 99亚洲人人| 精品国产乱码久久久兰草影视| 天天做天天爱| 欧洲综合视频| 91AV天美在线视频| 色婷亚洲五月在线观看| 91人妻人人澡人人爽人人精品| 亚洲熟妇熟在线电影视频| 欧美性色网| 国产福利影视| 九热超碰| 色约约一区=区三区| 五月丁香拍拍激情综合三级| 曰韩av中文字幕专区| www.91理论| 国产小u女在线观看| 国产97视频免费观看| 无码 有码 国产18p| 91人妻最真实刺激绿帽| 色五天伊人| 国产欧美日韩在线不卡第一页| 大香蕉专区| 色色五月丁香| 夜夜狼人妻| 亚洲 欧美 小说| 中文字幕欧美日本乱码一线二线 | 日产欧美电影一区二区三区| av网站免费线看| 约操熟妇| 亚欧精品久久久久久久久久久| 一区二区三区国产精产| 天天在线91| 中文字幕蜜乳av| 性爱乱伦一区| 鸥美精品一区二区久久婷婷| 亚洲激情欧美色图 | 和协影院中文字幕三区| 风间由美日韩欧美久久| 欧美伊人久久综合网| 日本久久精品| 日本不卡一区二区三区| 88xx成人精品视频| 在线 制服丝袜中出 人妻| av操操不卡| 久久久久久久9| 日韩一级成人毛片免费观看| 中文字幕少妇色| 大香蕉性欧美| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 91男女| 97久久精品国产| 又大又长又爽| 欧美亚洲丝袜美女电影| 国产AV色黄看到爽| 偷拍99| 久久9精品视频| 国产女生在线| 日韩人妻有码免费视频| 天天综和| 91四海无码日韩欧美| 精品人妻视频一区二区在线播放 | 欧美中字二区| 久久超碰久| 26uuu成人影片| 欧美九九99久久精品| 人人摸人人入| 国产视频第2页| 天堂综合| 婷婷午夜| 天天日少妇逼AV| 日B操| 久操免费视频| 乱精品一区字幕二区| 久久国产免费激情视频| 久久亚洲熟妇在线视频| 丝袜美腿欧美| 色图四区| 清纯唯美激情四射| 在线播放一级无码视频| 999熟女精品| 丰满人妻一区二区三区| 在线观看中文字幕| 欧美亚洲高清不卡| 99热综合| 欧美日产国产在线成人第一区| 超碰69| 秋霞网—男女啪啪亚洲免费体验区| 大香蕉综合在线| 麻豆人妻精品一区二区| 亚洲综合九九| 后入日本1234| 91黑丝美女| 动漫爆乳3D奶水一区在线观看| 91麻豆天美传媒在线| 少妇内射视频| 中文字幕少妇色 | 久久久久13| 加勒比海色香蕉婷婷| 亚洲怡春院| 男人天堂日日夜夜| 天天透伊人| 91Chinese在线| 人人干人人搞人人摸| 日语五十路和六十路亚洲国产精品| 亚洲色图欧美色图制服诱惑| 亚洲三级网址久久最新| 久久婷婷一区二| 亚洲情色第一页| 丁香六月婷| 国产亚洲99久久精品| 女人双腿搬开让男人桶| 在线观看高清AV| 摸奶性爱视频网站在线免费播放| 成人性爱免费播放| 欧洲精品一级二级精品综合视频综合 | 麻豆国产第一| 91足交| 精品国产网站| 亚洲国产青青| 中国和日本人色哪个不下载能放| 亚洲成人帖图| 上特色A在线| 久久色精品视频在线| 麻豆 亚洲 97| 色好看av| 资源在线观一 二| 亚洲丰满很很操| 国产精品自拍视频| 97一本大道亚洲一区| 精品无人区麻豆乱码1区2区图片| 国产偷人伦激情在线观看| 青娱乐导航AV| 十八禁电影伊人网| 国产精品不卡av免费在线观看| 亚洲成人ab| 欧美,日韩,中文,另类| 欧美综合另类| 99e久久国产精品| 日韩中文字幕在线视频观看| 欧美日韩m| 91超碰在线播放| 免费a v| 乱伦图av| 欧美午夜色妇色鬼| 成人九九| 日韩人妻一二三区视频| 国产熟女少妇一区| 嫩草 我啊~嗯~在线| 私人尤物在线精品不卡| 日本色色色视频| 91女网站| 97草草| 国产高清精品一区二区三区毛片| 丁香五月色情| 热G综合热G中文| 少妇无码av专区线| 嗯啊不要啊在线 | 色情五月综合婷婷| 久久久免费懂色| 日韩无码操逼片| 国产a级精品| 中国熟女老妇仑乱一区二区三区| 欧美性生活综合| 在线中文AV| 人人插人人摸人人| 一区二区三区色综合| 国产97视频| 精品久久青青草| 欧美亚洲丝袜人妻制服中文99| 久久久精品视频免费观看| 欧美激色| 国语对白在线播放视频| 18禁久久| 97操操| 91丝袜美女视频| 射丝袜高跟鞋99| 97欧美日韩精品| 久久HD| 大香蕉宗合网在线| 日韩99神马视频片| 2017大香蕉| 蜜臀无码视频在线观看| 日韩毛片9| 亚洲五区熟女| 麻豆黄四叶草网站| 青青草久久一区网| 亚洲色丰满少妇高潮| 黑人天8A∨高清网站| 亚洲欧美色图小说| 日日骚 av| 人妻人人做人人澡人人爽欧美一区| 国产精品点击进入在线影院高清 | 激情六月婷婷| 看日韩操逼| 九九热在线精品视频| 99这里只有精品国产| av强奸乱轮| 黑人操一区二区| 亚洲第一综合| 婷婷五月天激情网| 日本精品不卡一二三区| 久草免费在线一区二区| 白嫩91在线亚洲| 国产精品嫩草影院免费| 992视频一区| 九九综合网| 日韩精品高清资源在线| 亚洲丝袜色| 天天操夜夜操狠很操| 欧美色亚洲| 熟妇无码视频三区| 久久97资源 网| 精品国产少妇高潮视频| 99超级碰免费视频| 立川理惠无码一区二区| 亚洲字幕一区二区| 国产欧美日本亚洲精品| 97超碰色色| 综合大香蕉美。| 久久久91福利姬| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 91美女中出| 婷婷五月天综合网| 激情综合网五月婷婷| 99精品久久久久久久婷婷蜜桃| 亚洲一区二区三区四区视频| 亚洲欧洲综合av在线| 无码操逼网| 丰满高潮18xxxx| 日韩av乱伦| 婷婷综合激情| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 色综合1991| 射丝袜大香蕉| 噜噜噜噜天天狠狠| 国产后入式在线观看| 美女人妻色网站| 欧美一区二区三区不卡高清视频| 中文字幕乱码在线观看| 亚洲欧洲色情高清| 欧洲天天在线| 国产精品久久久久中文字幕| 打av高清| 欧美在线永久天堂| 亚洲熟女国产综合另类| 97免费视频在线观看视频| 偷拍综合网| 污污汅18禁网站在线永久免费观看| 欧美天天干| 午夜九九| 以及麻豆国产入口在线观看免费| 日韩欧美tv一区二区在线观看| 日本黄色裸日本黄色裸体| 91九色蝌蚪在线观看| 久久av成人无码免费| 色哟哟av| 亚洲涩图欧美| 亚洲AV噜噜狠狠网址蜜桃动漫| 欧美日韩在线小说 | 日韩无码AB| 亚洲天堂五月天国产| 亚洲熟妇乱女区二区三区| 天天日天天看| caopeng97| 欧美日本成人一区二区| 老女人日韩美91| 精品视频在线观看| 中文字幕视频2区| 91丝袜在线观看| 中文字幕二区日韩天堂| 97色碰| 久久国99999| 无码天天操| 国产精品69久久久久久久| 日欧操屄视频| 秋霞Av理论一级在线| 99综合自拍| 天堂中文资源在线bt| 精品人妻15区| 狠狠躁AV| 国产精品无套内谢| 精品十八在线观看| 啪啪视频mP4| 高跟丝袜AV专区国产| 人妻娇喘 激情视频| 怡红院怡春院| 午夜精品久久久久久久99蜜桃一| 亚州综合色| 中文字幕视频免费| www.91色综合| 99热在线观看| 大香蕉乱级| 亚州综| 97爱啪| 久久久婷婷| 9久综合网| 图片区小说区| 黄色电影观看久久9| 无码人妻1727| 天天干夜夜鈤| 啊啊啊啊,啊啊好多水| 欧美乱妇狂野欧美在线视频| 婷婷五月在线视频| 曰韩av中文字幕专区| 国产精品高清2021在线| 欧美高清91| 欲射影视| 粉嫩不卡一区二区性爱 | 日本99一区二区| 亚洲码在线中文在线观看| 天天爽爽爽爽| 日韩久射综合| 日产欧美电影一区二区三区| 亚洲高潮少妇| 精品国产乱码久久久兰草影视| 欧美午夜熟妇黑人精品91| 78超碰| 亚洲天堂男人天堂| www.久久超碰| 青青操日韩| 色偷偷男人的天堂麻豆| 日韩三级在线观看mp4| 啊啊啊啊操死我| 欧美人妻制服| 色婷婷激一区二区三区| 91少妇香蕉久久精品| 97色亚洲| www久久久| 加勒比久久av| 亚洲色图 图片| 中国熟妇| 蜜桃狠狠色伊人亚洲综合| 色超碰综合| 草B在线| 九九九九精品精| 狠狠久久手机视频精品| 秋霞成人一级在线观看| 国产精品香蕉热久久新品| 丁香五月影院| juliaann丝袜大战黑鬼| 97在线日韩中文字幕| 亚洲情欲| 色色色天美视频| 亚洲色图大香| 91操人| 日日爱99| 九色PORNY9l原创自拍| 伊人久久大香线综合无码| 久久久熟女一区| a男人的天堂久久一级A毛片| 新版天堂中文资源8在线| 大香蕉伊人75| 日韩人妻少妇 一区二区三区| 成人性爱全视频观看| 99在线免费公开视频| 美国日韩黄片| 探花精品 一区二区| 97色综合中文网| 综合亚洲欧美| 超碰在线一区二区三区| 亚洲骚逼少妇| 酒色综合网| 中文字幕乱码在线| 日日夜夜摸| 国产无码精品无码| 亚洲欧美一区二区网址| 亚洲中文字幕精品一区| 综合久久久久久久久91| 久久国产熟女影院| 岛国视频一二三区| 国产强奸超碰AV| 亚洲五月婷| 丰满人妻一区二区三区四| oumeisetu综合| 超碰碰97| 亚洲干B| 97综合久久| 51久久夜色精品国产麻豆| 黄在线| 一二三区在线| 久久精品老司| 精品无人区麻豆乱码1区2区图片| 亚洲色性| 超碰国产精品久| 综合亚洲网| 少妇3P性爱自拍| 试看60秒 爽| 天天舔天天日天天射| 欧美视频中文字幕区| 日韩免费簧片| avav青青草久久夜| 91久久久久久| 九九热精彩视频| 91亚洲综合| 唐山老熟妇露脸啪啪叫| 大香蕉在线86| 久久老女人| 99re在线观看| 国产情色第一第二页在线观看| 亚洲网污污污污| 免费亚洲国产精品久久一区| 欲综合网| 色五月大香蕉| 日韩av在线播放不卡| 性色综合网| 干我久操| 足交视频老司机| 91久久国产综合久久| 国产乱伦性爱AV| 富女玩鸭子一级毛片| 亚洲成人日韩小说| 图色综合网| 国产精品视频内谢女人| 九九热精品| 亚洲欧美97| 日本精品一区二区中文字幕| 大香蕉色欲AV| AV无码久久久精品| 伊人午夜福利视频| 无码在线亚洲| 国产嫩草精品A88AV| 99久久综合网| 91爱| 欧中日成人免费影视| 熟女激情综合网| 欧美后入视频| 国产人伦a片信息免费片| 大乔未久88一区| 国产精品久久久久久久久AV大片 | 欧美一区二区三区不卡高清视频| 99啪啪| 中文字幕av亚洲精品| 欧美久久婷婷| 精品亚洲国产成人AV制服丝袜| 久久伊人东京热| 少妇蜜汁| 亚洲中文日韩欧美大香蕉视频| 97综合久第一页| 国模限制级电影| 波多野结衣被操50分钟免费视频 | 激情综合av| 国产女人成人精品视频| 午夜舔阴达高潮视频免费看| 国桃视频产巨乳精品一区二区在线| 东亚亚洲无码高清| 天天爱天天操| 加勒比东京热五月天天堂网| 超碰99在线观看| 日韩精品碰碰| 一起草视频在线| 亚洲十八禁止| 你草精品在线视频| 亚洲国产精品久久久久久久久久| 人妻无一区二区三区| 亚洲精品黄码久久久久| 啊啊啊好舒服视频在线观看| 99热亚洲天堂| 日本福利社| 综合激情五月丁香| 欧美一区二区三区另类精品| 97视频免费在线观看| 天天夜夜rb| 俺去啦自拍| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 婷婷五月天无码| 欧美图片校园春色| 95自拍视频在线观看| 91蜜臀熟女| 黄色工厂这里只有精品| 日韩性爱视频免费在线| 国产伦精品免编号公布| 久久色激情一区二区三区| 欧美亚洲玖玖玖| 久99热| 嗯嗯啊在线视频| 日韩亚洲美州欧洲综三区一品在线| 人妻少妇av在线观看| 亚洲九区| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 亚洲日韩东京热一区| 夜夜操天天肏| 欧美日韩国产黄色片| 无码丰满熟妇一区二区浪潮AV| 奇米四色网| 日韩午夜国产| 色牛牛AV| 色欲蜜臀AV| 青青草久草AV| 97资源久久| 夜草欧美| 偷窥自拍亚洲天堂网爆| 日本熟女免费視颖| 国产 v乱码一区二| 午夜色婷婷| 天天狂操夜夜狂日| 中美日韩毛片| 怡红院视频在线| 伊人影院综合是一个与深夜成人在线 | 婷婷综合| 国产一区二区视频在线播放| 五月婷婷性爱| 亚洲乱色视频一区、二区在线| 97超碰亚洲| 韩国三级色呦呦| 亚洲第一精品在线视频 | 狠狠干妹子| 超碰在线人人射| 成人性爱全视频观看| 一区二区久久天天干狠狠| 国产不卡的视频| 国产福利精品98视频| 男男H黄动漫啪啪无遮挡网站| 亚洲综合有玛| 亚洲 欧美 第一页| 最近2019中文字幕国语免费版| 骚货人妻偷情自拍在线视频| 日本精品久久久久久久| 日韩福利综合一区| 激情网五月天| 天天色综合影视网| 91小视频| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 成人免费在线网站| 日本五十路在线| 26uuu国产亚洲综合| 午夜天堂精品久久久久91| 欧美综合狠| 人妻日日干| 少妇蹲下买菜露大唇0| a v网站在线播放| 97网址97| 免费毛片在线播放| 97伊人超碰| 色噜噜婷婷| 久久香蕉国产线看观看亚洲女人 | 久久久久极品| 亚洲黄色网址视频| 亚洲国产精品久久久久婷婷老年| 九九干| 97视频新免费| 亚洲va综合va国产va中文| 亚洲男人的天堂va亚洲男人社| 一起草AV| 日产操逼| 97精品97久久| 色香蕉影院| 91丨国产丨白浆秘 洗澡动漫| 美女91在线观看| 你想操日本小逼吗| 91狠狠综合久久| 欧美性,色九九| 国产AV无码AV| 超碰人妻久久| 天天射天天色成人| 欧美性爱一区| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 精品久久99| 91女在线观看| 久久久久亚洲一区女同性恋中文字幕| 爱欲AV| 婷色五月| 免费簧片在线观看| 日韩在线性爱免费视频| 国产路线专区| 免费a v| www久久精品| 91美女在线视频| 日韩三级网址| 日日夜夜骚| 97九色人妻| 人人摸人人摸人人干| 97超碰9| 999九九精品| 欧美成人性爱视频大全| 国产超碰人人操| 丁香五月天婷婷姐| 亚洲男人在线观看天堂| 亚洲图片91| 亚洲一级特黄大片在线播放91| 91精品久久久久久77777| 欧美性生活综合| 国产三级资源在线观看| 日本精品一区二区不卡| 成人片视频| 麻豆天美电影一区二区| 99精品成人免费看| 为用户提供免费看黄网址在线观看| 久热精品在线| 欧美第一页| 国产精品在线一区二区| 99.色网| 97超级久久强资源| 熟女视频久久| 国产版a级片直播在线| 欧美一级久久久丰满| 伊人影院日本| 久久区| 久久久月天| 后入式五六区| 熟妇女伦乱视频视频| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | a v网站在线播放| 国产一区自拍欧美日韩| 国产狂喷潮在线精品| 精品午夜福利导航| 人人操人人色网| 国产精品又黄又猛又粗| 内射夫妻三片| 乱伦Av网| 91成人久久 | 日韩精品电影| www久久精品| 在线欧美亚洲| 狠狠婷婷亚洲中文综合久久| 日韩激情电影中文字幕| 日韩人妻有码免费视频| 欧美一区二区三区蜜桃| 免费av大片| 亚洲综合色男人网| 上床不卡网站| 亚洲成人帖图| 天堂v无码免费视频| 熟女这里只有精品6| 欧美黄片欧美黄片xxx| 大香交伊人网| 国产精品suv一区| 一本一道久久综合久久| 欧美色网络| 中国少妇XXXX做受| 亚洲欧美国产成人综合不卡| 国产热RE99久久6国产精品首| 激情网五月天| 亚洲欧美性生活| 欧美亚洲高清晰| 精品国模无码| 干婷婷综合网| 嗯嗯嗯不要不要免费视频| 91在线色| 国产成人五月天丁香花| 91在线精品一区二区三区| 亚洲一本大道中文字幕无码在线| a久久| 欧美天堂亚洲电影院一区在线播放| 亚洲欧美97√| 天天操天天射天天日| 中文字幕一区av| 午夜精品人妻二区三区| 亚洲影视综合| 日韩女模中文造逼| 亚洲视频一二区| 熟女人妻一区二区三区| 久久久无码av精| 日日干夜夜操视频h| 不卡视频一区蜜桃视频| 亚洲精品一区二区三区在线播放| 日本九九久久99播| 国产97视频| 久操精品网| 97一本大道亚洲一区| 尤物国产一区在线观看| 精品69网| 久久一本大香蕉 | 中文字幕丰满子伦无码专区在线视频最新 | 天天看天天干| 国产夜夜操| 曰韩中文人妻视频| 亚洲 欧美 91| 色图综合| 精品免费1| 国产精品亚洲天堂网址| 五月天综合网| 中日韩久久久| 97超色| 夜夜草网站| 少妇熟女一区二区三区| 97人肏| 国产精品一区二区亚洲人成毛片| 国产日韩精品一区二区三区| 久久无码一区二区二三区性色| 九一综合精品视品av| 青青免费在线视频一区 | 九九热九九热| 日韩福利综合一区| 美女网站黄页| 丰满人妻一区二区三区| 秋霞网无码| 日本高清加勒比| 97人人射| 国产高清精品一区二区三区毛片| 91精品少妇搡搡搡| 激情五月激情综合网| 免費黃色視頻觀看一| 看一级特黄a大一片| 欧美性爱日韩性爱| 神马久久久久久伦理片| 色欲久久久久综合网| 中国熟妇| 噜噜瑟| 国产一区二区久久| 亚洲综合另类欧美久久久| 91久久久久久久| 国产操伦| 国产精品一二三区18| 九久9精品| 精人妻一区二区三区| 亚洲欧美精品久| 天天摸夜夜摸| 青青草操逼逼视频| 无码在线亚洲| 日韩欧美国产一区二区三区四区| 五十路三区在线| 91女日逼| 欧美偷拍| 91欧美www| 99这里只有精品| 97热视频在线观看| 日本新免费二区三区| 国产午夜视频| 欧美国产有色电影| 麻豆天美制片厂网站视频| 熟妇熟女亚洲天堂网| 激情婷婷五月天| 大香交伊人网| 日本免费一区二| 精品久久99| 婷婷丁香一区二区三区| 啊啊啊啊二区好大| 中文字幕人妻色偷偷久久皮| 青青国产在线拍揄自揄拍| 99 国产丝袜在线| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 在线天堂999| 久久免费精品视频免一| 国产成人91一区二区三区| 日本二三四区| 中文字幕丰满人妻日本| 亚洲av综合色区无码一| 国产精品九9| 国产深喉| 操逼天美3区| 国内91熟女人妻丝袜天天精品视频在线| 麻豆黄四叶草网站| 91色香| WWW黄片COM| 国产精品久久久久999| 国产偷拍网站| 中文字幕啊啊啊在线观看视频| 激情小说亚洲视频| 人人操人人摸人人看人人插| 欧美极品女人的天堂| 麻豆精品.欧美精品.日韩精品.| 日本操逼二区| 道久久五香丁月婷婷激情综合| 免费国产电影一区二区| 91亚洲黑人| 亚洲欧洲激情卡通另类文学四射小说网站 | 免费视频在线观看啊啊啊啊啊| 丝袜美腿91| 爱媛媛久久国产福利| 国产三级中文字幕粉嫩| 浪人综合网| 九九九九精品在线| 玖玖婷婷五月天| www.人人摸在线视频| 99啪啪| 五月丁香激情四射| 亚洲日韩av一区二区三区百合| 国产免费黄色一级大片| 天天干一区二区| 国产精品探花色| 日本不卡一区二区三区| 亚洲四虎熟女精品| 日日干日日摸| 久久久久久久少妇| 日熟女| 国产精品伦理| 亚洲日韩av一区二区三区百合| 亚洲av综合伊人久久| 国产精品69久久久久久久| 五月丁香六月婷| 中文操逼字幕| 男人天堂无码| 性爱久久| 色噜噜精品一区二区三| 九九九国产| www.AV有限公司一区| 丁香五月影院| 色嗨嗨在线| 91狠狠综| 国产伊人精品在线| www.高清无码诱惑一区.com| 色色婷婷五月| 中文字幕精品一区二区精| 久久久久久久9| 97人人色| 日韩噜噜69| 成人精品电影| 91久久久久久| 国产高清在线观看欧美| 国产1024在线播放| 欧美性暴力| 后入合集| 玖日综合网| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 神马麻豆福利院| 美女91色黄18| 98精品国产乱码久久久久久| 国产久久一区二区午夜| 久久综合五月天| 天堂种子在线www网资源| 高清成年美女黄网站免费大全 | 人妻一区二区三区| 亚洲男人天堂2019| 日韩9区| 久久精品国产97欧美精品亚洲 | 五月天日日操夜夜操| 操淫穴亚洲五月丁香 | 久久久人体| 色成人Www精品永久观看| 日本人人操人人操| 不卡视频一区蜜桃视频| 久久一区二区加油站| 欧美极品女人的天堂| 日本三级大片| 夜夜操狠狠操| 丝袜美腿诱惑亚洲欧美视频在线观看| 国产av又色又爽又黄| 国产一区二区免费福利片| 四虎精品永久在线播放| 懂色av一区二区三区天美传媒| 精品无码久久| 97天天操| 亚洲久久久| 乱欲视频| 亚欧毛片基地国产毛片基地| 一个国产在线综合网站| 2017人人操,人人摸| 成人无码在线超碰网| 色情乱伦AV| 国产av高清版| 96精品久久久| 天天舔日美女视频| 粉嫩久久久久|