国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

Hudi 原理 | Apache Hudi 中自定義序列化和數(shù)據(jù)寫入邏輯

共 8503字,需瀏覽 18分鐘

 ·

2021-10-20 10:56



1. 介紹

在Apache Hudi中,Hudi的一條數(shù)據(jù)使用HoodieRecord這個類表示,其中包含了hoodie的主鍵,record的分區(qū)文件位置,還有今天本文的關(guān)鍵,payload。payload是一個條數(shù)據(jù)的內(nèi)容的抽象,決定了同一個主鍵的數(shù)據(jù)的增刪改查邏輯也決定了其序列化的方式。通過對payload的自定義,可以實現(xiàn)數(shù)據(jù)的靈活合并,數(shù)據(jù)的自定義編碼序列化等,豐富Hudi現(xiàn)有的語義,提升性能。

2. 場景

包括但不限于如下場景中,我們可以通過自定義payload來實現(xiàn)靈活的需求。

?實現(xiàn)同一個主鍵的數(shù)據(jù)非row level replace語義的合并,如mvcc語義等?實現(xiàn)同一個主鍵下多時間戳數(shù)據(jù)靈活排序的語義?實現(xiàn)輸出redo/undo log的效果?實現(xiàn)自定義序列化邏輯

3. 作用方式

首先我們回顧一下一條HoodieRecord在Spark環(huán)境中使用RDD API upsert寫入MOR表的生命周期。

注意:在這個過程中,shuffle/寫入文件/磁盤spill的時候,都需要保證數(shù)據(jù)是已經(jīng)被序列化過的格式。

4. 實現(xiàn)方式

在Hudi中,默認的payload實現(xiàn)是DefaultHoodieRecordPayload,它是OverwriteWithLatestAvroPayload子類。而OverwriteWithLatestAvroPayload這個類繼承了BaseAvroPayload并implements?HoodieRecordPayload這個接口。

其中BaseAvroPayload決定了數(shù)據(jù)的序列化方式,而HoodieRecordPayload決定了數(shù)據(jù)的合并方式。后者是必須使用的,但是前者不是。下面來分別分析他們的實現(xiàn)。

BaseAvroPayload

/** * Base class for all AVRO record based payloads, that can be ordered based on a field. */public abstract class BaseAvroPayload implements Serializable {  /**   * Avro data extracted from the source converted to bytes.   */  public final byte[] recordBytes;  /**   * For purposes of preCombining.   */  public final Comparable orderingVal;  /**   * Instantiate {@link BaseAvroPayload}.   *   * @param record      Generic record for the payload.   * @param orderingVal {@link Comparable} to be used in pre combine.   */  public BaseAvroPayload(GenericRecord record, Comparable orderingVal) {    this.recordBytes = record != null ? HoodieAvroUtils.avroToBytes(record) : new byte[0];    this.orderingVal = orderingVal;    if (orderingVal == null) {      throw new HoodieException("Ordering value is null for record: " + record);    }  }}

首先BaseAvroPayload?implements了Serializable接口,標志著這個類和它的子類都是為了序列化而設(shè)計的,大家在繼承的時候需要注意子類相關(guān)attribute的可序列化問題。

構(gòu)造器傳入了GenericRecord和一個Comparable的變量。由于Hudi使用avro作為內(nèi)部的行存序列化格式,所以輸入的數(shù)據(jù)需要以GenericRecord的形式傳遞給payload。BaseAvroPayload會將數(shù)據(jù)直接序列化成binary待IO使用。這里的假設(shè)是我們只需要做row level操作,直接操作整行的二進制數(shù)據(jù)毫無疑問是非常高效的,這里的orderingVal是因為基于行級別的record比較在RDBMS的CDC中是非常常見的,所以增加了這個字段。這樣處理之后,只需保證comparable的變量也是可序列化的,這個類的所有attribute都已經(jīng)是可序列化的格式了,使用任意序列化框架直接傳輸即可。

HoodieRecordPayload

/** * Every Hoodie table has an implementation of the HoodieRecordPayloadcode> This abstracts out callbacks which depend on record specific logic. */@PublicAPIClass(maturity = ApiMaturityLevel.STABLE)public interface HoodieRecordPayload<T extends HoodieRecordPayload> extends Serializable {  /**   * This method is deprecated. Please use this {@link #preCombine(HoodieRecordPayload, Properties)} method.   */  @Deprecated  @PublicAPIMethod(maturity = ApiMaturityLevel.DEPRECATED)  T preCombine(T oldValue);  /**   * When more than one HoodieRecord have the same HoodieKey, this function combines them before attempting to insert/upsert by taking in a property map.   * Implementation can leverage the property to decide their business logic to do preCombine.   *   * @param oldValue   instance of the old {@link HoodieRecordPayload} to be combined with.   * @param properties Payload related properties. For example pass the ordering field(s) name to extract from value in storage.   *   * @return the combined value   */  @PublicAPIMethod(maturity = ApiMaturityLevel.STABLE)  default T preCombine(T oldValue, Properties properties) {    return preCombine(oldValue);  }  /**   * This methods is deprecated. Please refer to {@link #combineAndGetUpdateValue(IndexedRecord, Schema, Properties)} for java docs.   */  @Deprecated  @PublicAPIMethod(maturity = ApiMaturityLevel.DEPRECATED)  Option<IndexedRecord> combineAndGetUpdateValue(IndexedRecord currentValue, Schema schema) throws IOException;  /**   * This methods lets you write custom merging/combining logic to produce new values as a function of current value on storage and whats contained   * in this object. Implementations can leverage properties if required.   * 

* eg: * 1) You are updating counters, you may want to add counts to currentValue and write back updated counts * 2) You may be reading DB redo logs, and merge them with current image for a database row on storage * p> * * @param currentValue Current value in storage, to merge/combine this payload with * @param schema Schema used for record * @param properties Payload related properties. For example pass the ordering field(s) name to extract from value in storage. * @return new combined/merged value to be written back to storage. EMPTY to skip writing this record. */ default Option<IndexedRecord> combineAndGetUpdateValue(IndexedRecord currentValue, Schema schema, Properties properties) throws IOException { return combineAndGetUpdateValue(currentValue, schema); } /** * This method is deprecated. Refer to {@link #getInsertValue(Schema, Properties)} for java docs. * @param schema Schema used for record * @return the {@link IndexedRecord} to be inserted. */ @Deprecated @PublicAPIMethod(maturity = ApiMaturityLevel.DEPRECATED) Option<IndexedRecord> getInsertValue(Schema schema) throws IOException; /** * Generates an avro record out of the given HoodieRecordPayload, to be written out to storage. Called when writing a new value for the given * HoodieKey, wherein there is no existing record in storage to be combined against. (i.e insert) Return EMPTY to skip writing this record. * Implementations can leverage properties if required. * @param schema Schema used for record * @param properties Payload related properties. For example pass the ordering field(s) name to extract from value in storage. * @return the {@link IndexedRecord} to be inserted. */ @PublicAPIMethod(maturity = ApiMaturityLevel.STABLE) default Option<IndexedRecord> getInsertValue(Schema schema, Properties properties) throws IOException { return getInsertValue(schema); } /** * This method can be used to extract some metadata from HoodieRecordPayload. The metadata is passed to {@code WriteStatus.markSuccess()} and * {@code WriteStatus.markFailure()} in order to compute some aggregate metrics using the metadata in the context of a write success or failure. * @return the metadata in the form of Map<String, String> if any. */ @PublicAPIMethod(maturity = ApiMaturityLevel.STABLE) default Option<Map<String, String>> getMetadata() { return Option.empty(); }}

這個類的注釋寫得非常清楚,其中每個方法都有定義兩個個不同接口,截止本文發(fā)出時候(0.9.0版本),部分內(nèi)部邏輯還在使用deprecated的舊版本,所以在使用時需要注意,邏輯最好放在舊接口里。

簡單來說,preCombine?這個方法定義了兩個payload合并的邏輯,在兩個場景下會被調(diào)用:

1.當deduplicated 開啟時,寫入的數(shù)據(jù)兩兩合并時用到2.在MOR表發(fā)生compaction時,兩條從log中讀取的payload合并時用到3.MOR表使用RT視圖讀取時

combineAndGetUpdateValue?則定義了寫入數(shù)據(jù)和baseFile中的數(shù)據(jù)(這里已經(jīng)被轉(zhuǎn)化成avro的行存格式)的合并方式。通常情況下,這合并邏輯應(yīng)該和preCombine保持語義上的一致。

最后getInsertValue則定義了如何將數(shù)據(jù)從payload形式轉(zhuǎn)化成GenericRecord。在Hoodie相關(guān)的WriteHandle中被大量使用。通常是被用在寫入Log/BaseFile時調(diào)用的。

幾點額外注意的是:

1.combineAndGetUpdateValue和getInsertValue返回的都是Option,在這里,如果返回Option.empty(),就是指數(shù)據(jù)刪除的意思。EmptyHoodieRecordPayload?正是這一邏輯的payload表達,如果preCombine的返回結(jié)果是刪除,則可以返回這個類的實例。而hoodie中,在insert和upsert中通過添加_hoodie_is_deleted字段來實現(xiàn)刪除的原理,本質(zhì)上也是在payload中判斷到這個字段,就返回空來實現(xiàn)的。2.不論是否繼承BaseAvroPayload這個類/是否需要Comparable類型的orderingVal, 最好保留(GenericRecord, Comparable)這個構(gòu)造器,因為Hudi中存在反射調(diào)用創(chuàng)建對象,默認尋找的構(gòu)造器就是這個。

5. 使用場景

5. 1 Column Level的數(shù)據(jù)合并

有時候我們希望能夠?qū)崿F(xiàn)兩個數(shù)據(jù)合并時,能夠按照每個列的實現(xiàn)不同的合并邏輯。這時候就可以在preCombinecombineAndGetUpdateValue方法中借助schema遍歷所有列,然后做不同的處理。如果需要在preCombine中使用Schema,可以在構(gòu)造器初始化的時候保留GenericRecord中schema的引用。如果發(fā)生序列化后的傳輸,同時又沒有使用schema可以序列化的版本(avro 1.8.2中 schema是不可序列化的對象),那么可以從方法中傳遞的properties中傳遞的信息構(gòu)建schema。

public HoodieRecordPayload preCombine(HoodieRecordPayload oldValue, Properties properties) {    if (schema == null) {        this.schema = new Schema.Parser().parse(properties.get(HoodieWriteConfig.AVRO_SCHEMA_STRING.key()));    }    initialSchema(properties);    GenericRecord thisRecord = getInsertValue(schema).get();    GenericRecord otherRecord = oldValue.getInsertValue(schema).get();    List<Schema.Field> fields = schema.getFields();    for (Schema.Field field : fields) {        // logic for each column    }    return new HoodieRecordPayload(thisRecord, orderingVal);}

5.2 實現(xiàn)自定義的序列化方式

在默認的BaseAvroPayload中,一次upsert,一條數(shù)據(jù)通常最少要序列化/反序列化三次,第一次是創(chuàng)建payload的時候,第二次是在寫入時反序列化,第三次是寫入文件時序列化。如果數(shù)據(jù)非常復(fù)雜,序列化其實是非常耗時的。我們可以通過靈活定義payload來決定序列化的方式,減少觸發(fā)正反序列化的次數(shù)。這個技巧在Compaction的時候也可以獲得收益。如考慮如下場景:

對于一條kakfa的數(shù)據(jù),我們可以把key和partition相關(guān)的內(nèi)容存在kafka的key/timestamp中。然后使用binary的方式獲取kafka的value。通過kafka的key來構(gòu)建HoodieRecordKey,然后將value直接以二進制方式存在payload中的map/list中,這樣不會觸發(fā)任何關(guān)于數(shù)據(jù)的序列化,額外的開銷很低。而后將合并的邏輯放在getInsertValue方法中,在從payload轉(zhuǎn)換成GenericRecord時,才將binary進行同一個key的數(shù)據(jù)合并和數(shù)據(jù),這樣只需要一次avro的序列化操作就可以完成寫入過程。

需要注意的是,這樣的設(shè)計方式毫無疑問增加了復(fù)雜度,使業(yè)務(wù)邏輯抽象方式變難,同時因為avro的序列化壓縮比例通常比較高,如果直接傳輸業(yè)務(wù)數(shù)據(jù),可能會有更大的IO和內(nèi)存占用,需要根據(jù)場景評估收益。

6. 總結(jié)

本篇文章中我們介紹了Apache Hudi的關(guān)鍵數(shù)據(jù)抽象payload邏輯,同時介紹了幾種關(guān)鍵payload的實現(xiàn),最后給出基于payload的幾種典型應(yīng)用場景。

瀏覽 145
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 怡红院成人网| 粉嫩99国产精品久久久久久人妻| 99热大香蕉| 免费成人黄色网址| 91大香蕉视频| 国产理论在线| 亚洲少妇网| 在线观看免费黄色视频| 日韩一级黄色| 91九色在线| 国产精品综合| 国产无码做爱视频| 日屄免费视频| 人人妻人人澡人人爽久久con | 亚洲中文字幕在线播放| 丁香五月成人| 成人h在线观看| 免费无码又爽又黄又刺激网站| 91亚洲精华国产精华精华液| 五月欧美激情| av一区二区三区| 一区在线播放| 日日干天天射| 插菊花综合网站| 黄色无码视频在线观看| 欧美操美女| av在线资源网站| 一区二区三区免费观看| jiujiuav| 翔田AV无码秘三区| 天天干天天色| 国产黄色视频免费看| 九九99精品视频| 先锋久久资源| 亚洲成人性爱av| 欧美大香蕉在线| 丁香五月天啪啪| 久久婷婷国产麻豆91天堂| 99三级片| 加勒比久久88| 夜夜AV| 国产一级a毛一级a| 黄片网站视频| 国精产品一区一区三区四川| 做爰视频毛片下载蜜桃视频。| 日韩无码av电影| 国产美女被爽到高潮免费A片软件| 天天干夜夜操熟女| 东京热在线观看| 黑人AV在线| 国产成人精品视频免费| 2025AV天堂网| 成人黄色AV| 91麻豆福利| 国产又爽又黄免费观看| 性爱AV网| AV无码毛片| 日本高清一区二区高清免费视频 | 色欧美亚洲| 亚洲无码免费观看| 国产成人a| 成人第一页| 99视频在线看| 东方AV在线免费观看| 五月激情六月| 99久久婷婷国产综合精品| 天堂中文资源在线观看| 色五月婷婷五月天激情| 99色播| 男女嫩草视频| 天天日夜夜| 黄色小电影网站| ThePorn人妻白浆| 久操人妻| 十八禁无码网站在线观看| 新版欧美内射大全| 亚洲AV秘成人久久无码海归| 欧美日韩国产成人电影| 成人无码网站在线观看| 日本中文字幕精品| 有免费的欧美操逼视频吗| 天天爽天天| 青娱乐偷窥成| 国产在线不卡年轻点的| www.91av| 三级视频网站| 日韩在线视频免费观看| 免费激情网站| 麻豆国产91在线播放| 欧美群交在线| 在线免费观看黄| 在线观看视频91| 三级在线观看视频| 少妇高潮无码| 91av免费| 免费黄色视频网址| 亚欧洲精品| 伊人久久视频| 黄色视频网站亚洲| 美日韩三级| 免费视频一区二区| 中国老太卖婬HD播放| 大香蕉电影网| 欧美婷婷| 久久香蕉综合在线| AV片在线观看| 国产精品91视频| 国产精品99久久久久的广告情况 | 翔田千里被操120分钟| 五月天青青草超碰免费公开在线观看 | 成人国产精品秘久久久网站| 日韩在线观看| 男人天堂AV片| 麻豆午夜福利| 欧美性爱动态| 青娱乐成人在线视频| 大香蕉久久精品| 免费在线观看AV片| 男女av免费观看| 久草视频福利在线| 高清无码视频观看| 日本五十路熟女视频| 综合色播| 亚洲人妻电影| www.大鸡巴| 欧美日韩国产在线观看| 日本伊人在线综合视频| 99久久综合九九| 夜夜嗨AV一区二区三区啊| 亚洲黄色视频在线免费观看| 日韩一区二区无码视频| 真人BBwBBWBBw另类视频| 中文在线一区| 午夜精品视频在线观看| 嗯啊av| 成人在线视频播放| 黄色片免费观看| 蜜桃秘一二三区最新| 亚洲综合免费观看高清完整| 亚洲精品国产精品乱码不卡√香蕉| 黄一区二区| 人人天天久久| 99久re热视频精品98| 亚洲中文字幕视频在线| 久久久WWW成人免费精品| 91成人一区| 荫蒂添出高潮A片视频| 国产综合激情| 国产在线观看免费成人视频| 中文字幕在线播放AV| 黄片网址在线观看| 91一级片| 一区二区三区精品无码| 亚色视频| 亚洲精品成人无码毛片| 婷婷五月天激情四射| 一区二区三区欧美| 搞搞网日本9| 国产精品一卡二卡三卡| 天天天日天天天天天天天日歌词| 日韩一级免费电影| www.激情五月天| 久久水蜜桃| 大香蕉AV在线| 久99在线视频| 国产精品在线看| 综合网插菊花| WWWA片| 欧美三P囗交做爰XXXⅩ| 久久久久久91香蕉国产| 人人爱人人插高清| 日韩无码一| 超碰成人在线免费观看| 在线观看免费成人网站| 国产—a毛—a毛A免费| 日本免费爱爱视频| 久久久久久三级电影| 伊人99在线| 欧美A级成人婬片免费看| 黄色片在线观看视频| 国产成人无码一区二区| 久久不卡| 天天谢天天干| 精品无码免费视频| 青在线视频| 欧美A区| 18XXX亚洲HD护士JD| 视频一视频二在线视频| 91国产免费视频| 在线视频一区二区| 日韩18在线| 欧美aaa在线| 国产黄色无码| 亚洲欧洲中文字幕| 日皮视频在线观看| 91一区二区在线播放精品| 亚洲热视频在线观看| 伊人性爱网| 激情开心五月天| 四虎精品一区二区三区| 蜜桃Av| www.黄色av| 91鲁| 成人精品国产| 国产操屄视频| 午夜福利sw| 91久久久久久久18| 欧美性爱五月天| 特级西西WWW888| 久草蜜臀| 翔田千里无码一区| 激情六月丁香| 亚洲A片在线观看| 洞av| 91免费成人视频| 热99在线| 91.xxxxx| 免费三区| 九色91PORNY国产| 肏屄视频免费| 一区二区三区亚洲| 在线A∨视频| 免费成人视频在线观看| 国产女人18毛片水18精| A无码| 国产亚洲无码| 婷婷午夜精品久久久久久性色| 日本激情视频| 成人A毛片| 超碰97观看| 欧美成人精品网站| 国产一级a毛一级a毛视频在线网站 | 成人无码日韩精品| 中文字幕乱| 亚洲婷婷小说| 97国产精品视频人人做人人爱| 91在线无码精品秘国产| 青草福利视频| 在线A片免费观看| 国产熟女露脸普通话对白| 在线无码av| 懂色午夜福利一区二区三区| 91婷婷射| AV片在线免费观看| 日韩99| 国产一级操逼片| 亚洲午夜免费视频| 久操精品| 男人资源在线| 国产美女一级真毛片酒店| 操一操影院| 国产欧美日韩成人| 偷拍久久久| 色婷婷色99国产综合精品| A亚洲天堂| 9I成人免费版视频| 国产91精品在线观看| 婷婷五月综合久久中文字幕| 婷婷五月天成人社区| 老熟妇搡BBBB搡BBBB| 一级女婬片A片AAAA片| 婷婷久草网| 色婷婷久综合久久一本国产AV| 国产色在线| av不卡免费观看| 精品无码视频在线| 国产精品96久久久| 中文字幕一区三区三A片密月 | 五月中文字幕| 少妇爆射| 男人视频网站| 午夜成人免费视频| 少妇性视频| 中文字幕人妻在线中文乱码怎么解决| 人成在线免费视频| 国产性综合| 久久精品秘一区二区三免费| 足交在线观看| 91久久久久久久久久久| 亚洲中文字幕不卡| 熟女无码| 大肉大捧一进一出免费阅读| 俺也去也| 撸一撸成人在线做爱视频。| 日本A片在线免费观看| 日日夜夜av| 一级片黄色免费| 狠狠干婷婷| 操碰97| 成人中文字幕在线视频| 一级国产欧美成人A片| 成人网站在线看| 午夜在线无码| 91久久国产综合久| 北条麻妃一区二区三区在线| 777中文字幕| 久久不卡| 日本一级片免费看| 成人激情在线观看| 国产真人一级a爱做片| 国产成人精品一区| 中文字幕无码av| 中文字幕东京热| 亚洲精品成人视频| 亚洲男女av| 美日韩一区二区三区| 色妹子综合| 日韩做爱网站| 91久久久久久| 人人草人人看人人摸| 亚洲另类天堂| 日韩在线免费视频| 北条麻妃在线一区二区| 亚洲av观看| 国产夫妻自拍av| 婷婷丁香五月综合| 久久久久久亚洲精品| 亚洲精品国偷拍自产在线观看蜜桃 | 中文人妻av| 一二三久久| 日韩人妻无码视频| 中文字幕乱码视频| 国产黄A片免费网站免费| 人人澡人人妻人人爽| 国产精品VA| 日韩人妻无码专区一区二区 | 色哟哟视频| A片小视频| 在线不卡中文字幕| 亚洲精品国产成人综合久久久久久久久 | 三级影片在线观看性| 欧美第一夜| 成人黄网在线观看| 成人色色网站| 精品國產一區二區三區久久蜜月| a免费在线观看| jizz国产| 欧美A片免费| 亚洲综合色网| 欧美A级成人婬片免费看| 久久五月婷| 猛男大粗猛爽h男人味| 国产调教视频| 国产精品免费一区二区三区四区视频| 日韩无码动漫| 青青激情视频| 囯产精品久久久久久久久| 欧美成人中文字幕| 巜痴漢電車~凌脔版2| 国产乱伦精品视频| 天天狠狠干| 日本一级理论片在线大全| 久久午夜电影| 人妻无码一区二区三区免费| 玖玖资源站中文字幕| 久久青留社区金玉| 天天操人人| 北条麻妃在线观看香蕉| 免费做a爰片77777| 日韩A片免费| 国产精品美女视频| 日韩一区二区三免费高清在线观看 | 人人天天夜夜| 在线视频福利| 高清无码在线观看18| 黄色爱爱视频| 亚洲色图在线视频| 五月天操逼网站| 日韩三级在线| 欧美黄色成人视频| 欧美久久久| jizz久久| 亚洲成人影片| 操逼网首页123| 亚洲精品97久久| 五月天婷婷丁香综合视频| av天天日| 人人看人人草| 在线黄网站| 尤物视频网| 一级黄片免费视频| 电影91久久久| 国产剧情一区二区三区| 安徽妇搡BBBB搡BBBB小说| 人人射人人爱| 欧美黄片AAA| 乱伦网址| www.操B| 2021无码| 国产香蕉视频在线播放| 俺来也俺去也| 成人片毛片| 操操小骚逼| 精品成人一区二区三区| 天堂成人AV| 伊人9999| 国产成人精品无码片子的价格| 亚洲高清免费视频| 在线观看视频无码| 玖玖爱AV| 九九碰九九爱97超碰| 91新婚人妻偷拍| 亚洲成人视屏| 69福利| 综合激情网| 丁香五月天av| 日韩99热| 草草在线视频| 精品91在线视频| 在线黄网| 青青草无码在线| 俺来也俺去也www色| 欧美特黄AAAAAAAAA片| 热久久最新| 蜜桃视频网站| 成人片毛片| 亚洲国产精品成人网站| 麻豆国产精品一区| 高清日韩欧美| 东京热视频在线观看| 国产91精品久久久天天| 激情五月色五月| 中国九九盗摄偷拍偷看| 色色网站在线观看| 操老女人视频| 日本免费不卡| 最新av网| 蜜臀久久99精品久久久电影| 9久9久9久9久女女女女| 狠狠躁婷婷天天爽综合| 91蝌蚪在线| 玖玖爱这里只有精品| 波多野结衣无码视频| 无码av一区| 天天干狠狠| 操逼免费网站| 天天摸天天干| 韩国一区二区三区在线观看| 亚洲日韩Av无码中文字幕美国 | 欧美一区| 日韩黄色视频网站| 亚洲视频观看| 欧美一区二区三区在线| 日韩亚洲欧美在线| 成人精品亚洲人成在线| 亚洲国产高清视频| 久热在线精品视频| 中文字幕无码乱伦| 91拍真实国产伦偷精品| 九九天堂| 嫩BBB槡BBBB槡BBB小号| 免费三级网址| 国产AV播放| 大地资源第三页在线观看免费播放最新 | 天天无码| 五月天无码在线| 中文字幕av网站| 国产第1页| 国产精品秘久久久久久1-~/\v7-/ 囯产精品一区二区三区线一牛影视1 | 日韩爱爱网站| 91久久精品一区二区三区| 五月天激情婷婷| 亚洲另类天堂| 青娱乐成人在线视频| 97超碰碰| 一区二区三区色| 嫩BBB槡BBBB槡BBBB二一| 黄色成人网站在线观看| 琪琪色在线视频| 免费的黄片| 日韩大片免费观看| 女生自慰网站在线观看| 可以免费看av的网站| 日韩视频免费看| 99精品视频在线播放免费| 五月婷婷操逼| 日韩一级A| 黄色免费网站在线观看| 另类老太婆性BBWBBw| 国产黄色在线看| 成人性生活一级片| 亚洲自拍电影| 色婷婷播放| 成人午夜视频精品一区| 玉米地一级婬片A片| 天天摸天天日| 无码欧精品亚洲日韩一区| 国产香蕉视频| 亚洲AV永久无码精品| 婷婷午夜福利| www.伊人网| 91丨露脸丨熟女| 91亚洲精品乱码久久久久久蜜桃| 日韩高清无码观看| 免费黄片无码| 特黄网站| 欧美日韩国产在线播放| 青娱乐成人电影| 亚洲中文自拍| 激情91| 久久毛片视频| 无码视频中文字幕| 国产成人精品a区在线观看| 51妺妺嘿嘿午夜成人A片| 翔田千里無碼破解| 亚洲精品成人AV| 国产在线成人视频| 大香蕉伊在线观看| 青青青草视频在线观看| gogogo日本免费观看高清电视剧的注意 | 日韩另类| 久久男人天堂| 日韩视频区| 六十路老熟女码视频| 99精品六月婷婷综合在线| 日韩精品不卡| 天堂俺去俺来也www久久婷婷| 伊人大香蕉网站| 无码免费中文字幕| 日本不卡一区二区| 探花AV| 国产免费观看视频| 三级无码视频在线观看| 狼人亚洲伊人| 日本大香蕉视频| www.国产| 一本色道综合久久欧美日韩精品| 91久久久久久久久久久| 激情五月天婷婷| 中文字幕一区二区三区四虎在线| 玖玖资源网站| 亚洲一| 亚洲三级片免费观看| 午夜精品视频| 青草精品视频| 大地99中文在线观看| 翔田千里无码A片| 国产婷婷五月| 无码任你躁久久久久| 欧美在线一区二区| 国产在线视频一区| 69成人天堂无码免费| 凸凹翔田千里无码| 欧美footjob| 中文字幕乱码亚洲无线码在线日噜噜| 欧美天堂在线观看| 欧美自拍视频在线| 在线播放亚洲| 色就是亚洲| 日本操B久久| 少妇视频| 国产欧美综合一区二区三区| 成人a片视频| 边添小泬边狠狠躁视频| 先锋资源男人站| 佳佳女王footjob超级爽 | 69av电影| 国内夫妻【20p】| www.911国产| 国内精品卡一卡二卡三| 黄色工厂这里只有精品| 成人一级黄色片| 成人日韩精品| 午夜色色福利| 欧美成人网站在线观看| 欧美综合在线观看| 中文字幕免费高清网站| 人人妻人人澡人人爽人人爽| 在线观看av资源| 国产特黄级AAAAA片免| 韩国三级HD中文字幕2019年| 欧美在线不卡| 国产成人小视频| 国产在线无码观看| 日韩在线观看一区二区| 国产成人精品久久二区二区91 | 午夜精品18视频国产17c| 一级黄色电影免费观看| 天天干天天射天天爽| 美女高潮在线| 青青草视频免费在线观看| 国产欧美日韩成人| 午夜亚洲| 欧美色图第一页| 国产一卡二卡三卡| 依人大香蕉| 黄色免费观看网站| 天天精品视频| 日本国产黄色| 四川性BBB搡BBB爽爽爽小说| 91人妻无码视频| 激情一一区二区三区| 99中文字幕| 国产白丝在线| 日韩国产中文字幕| 国产一级婬片A片免费无成人黑豆 国产真实露脸乱子伦对白高清视频 | 国产综合在线播放| 日韩精品免费无码视频| 日韩理论在线| 懂色av懂色av粉嫩av| 日韩18在线| 日本a片免费| 影视先锋成人在线| 亚洲天堂视频在线观看| 亚洲综合激情| 97在线免费视频| 国产色播| 久久精品一区二区三区蜜芽的特点| 国产经典午夜福利视频合集| 色网站操逼| 无码不卡中文字幕| 手机看片欧美+日韩+国产| 亚洲最新无码视频| 日日操天天操夜夜操| 东方美美高清无码一区| 人人妻人人澡人人爽| 无码国产精品一区二区免费式直播 | 午夜av在线| 暖暖爱视频免费| 欧美国产精品一二三产品在哪买| 黄骗免费网站| 台湾成人综合网| 日韩成人一区二区| 91AV成人| 内射视频在线免费观看| 亚洲成人性爱视频| 一区二区三区久久久久| 亚洲精品在线视频观看| 最新中文| 天堂中文资源在线观看| 爱搞搞就要爱搞搞| 日韩最新无码发布| 一级片三级片| 国产精品无码激情视频| 亚洲成人网站视频| 国产无码在线影院| 奶大丰满一乱一视频一区二区三区在| 久艹| 无码视频免费观看| 最新中文字幕在线观看| 男女av| 香蕉成人A片视频| 大地二中文在线观看免费鲁大师| 日本不卡一区二区三区| 中文字幕国产视频| 成人三级AV| 三级黄视频| 一级理论片| 国产免费麻豆| 欧美视频二区| 亚洲A片在线观看| 99视频热| 懂色av,蜜臀AV粉嫩av| 日韩人妻在线观看| 人人妻人人色| 国产调教视频| 高清av无码| 免费的AV| 色搞搞| 69视频网| 一区二区三区四区五区在线| 无码三级在线观看| 国产福利在线播放| 成人在线黄色视频| 黄色A片视频| 久久国产精品波多野结衣AV| 国产乱妇乱子伦视频免费观看| 91视频观看| 性欧美老妇bbwbbwbbw| 西西4444WWW无码视频| 成人无码在线观看免费视频| 六月婷| 人人摸人人看| 五月天激情爱爱| 一区二区三区操逼| 久久久中文字幕| 豆花无码视频一区二区| 91一区二区在线观看| 在线观看免费高清无码| 99在线观看视频在线高清| 亚洲激情欧美激情| av无码不卡| 久久久精品中文字幕麻豆发布 | 午夜操逼逼| 美日韩一区| 日本黄色免费在线观看| 日韩在线第—页| 五月天三级片| 青青草日逼视频| 91在线无码精品秘国产-百度| 国产精品911| 怡红院一区| 日韩成人一区二区三区| av中文字幕在线播放| 日韩黄色小说| 国产黄色自拍视频| 天天干夜夜爽| 青青操国产乱伦| 黄色免费在线观看网站| 美女少妇激情BBBB| 欧美日韩一级二级三级| 无码人妻久久一区二区三区蜜桃| AV天堂资源| 亚洲人妻影院| 久久久久久久免费| 日韩毛片中文字幕| 成人黄片视频| 国产一区在线视频| 高清一区二区三区| 亚洲乱伦| 无套内射在线免费观看| 国产精品扒开腿| 亚洲AV无码成人精品区h麻豆| 日韩一本道在线| 黑人无码一二三四五区| 亚州在线中文字幕经典a| 少妇bbb搡bbbb搡bbbb| 亚洲内射网| 99无码国产成人精品| 四川BBB搡BBB爽爽爽电影| 欧美黑人大吊| 狠狠色婷婷777| 人人射视频| 三级片91| 国产TS丝袜人妖系列视频| 亚洲精品黄色| 国产一区二区精品| 内射午夜福利在线免费观看视频| av字幕网| 久久综合站| A级片免费看| 国产真实乱婬A片久久久老牛| 成人免费看A片| 亚洲成年视频| 无码一区二区三区在线观看| 俺去俺来也www色官网cms| 成人日韩欧美| 特级黄色毛片| 色情欧美一级A片| 怡春院熟女精品AV| 强开小嫩苞毛片一二三区| 麻豆熟妇乱妇熟色A片在线看| 国产色色视频| 嫩草91| 国产三级小视频| 国产精品成人99一区无码| 国产无码成人免费| 国产a视频| 白虎高清无码大尺度免费在线观看 | 超级碰碰碰碰碰碰碰碰碰| 亚洲精品无码人妻| 国产日韩欧美成人| 久久久久亚洲AV无码网影音先锋| 欧美精品一卡二卡| 第四色激情网| 99伊人| 亚洲女人被黑人巨大的原因| 国内成人精品网站| 亚洲天堂视频网| 国产无码做爱视频| 麻豆视频一区二区三区| 成人精品电影| www.一区二区三区| 成人网视频| 亚洲一区二区黄色电影视频网站| 夜夜爽夜夜爽| 黄色视频网站观看| 91成人网站| 欧美黄色免费网站| 在线观看禁无码精品| 黄色大片免费看| 秋霞无码一区二区三区| 久久久久99| 国产黄片一区二区| 自拍成人视频| 躁BBB躁BBB添BBBBBB| 欧美在线不卡| 亚洲三级网站在线观看| 国产女人高潮的AV毛片| 91欧美性爱| 日本熟妇高潮BBwBBwBBw| 在线观看黄色AV| 成人超碰在线| 中文字幕免| 97免费视频在线观看| 影音先锋久久久| 日韩高清无码一区二区三区| 在线观看黄色av| 国产又爽又黄免费观看视频| 俺来也俺去| 国产精品久久久久无码AV| 亚洲欧美日韩激情| 毛片在线观看网站| 中文字幕免费高清| 91av电影网| 五月激情婷婷网| 午夜理伦| 无码AV在线观看| 精品无码国产一区二区三区51安| 国内自拍2025| 伊人久久精品| 成人精品电影| 国产在线a| 黄色操逼网站?| 熟妇操逼视频| 大香蕉9999| 婷婷五月久久| 欧美在线不卡| 激情乱伦网| 亚洲香蕉影院| 9999国产精品| 婷婷久久综合久色综| 欧美日逼小视频| 欧美三级欧美一级| 成人性爱视频网站| 日本免费视频| 91热| 免费+无码+精品| 日韩成人av在线| 91九色在线| 水果派AV解说| 麻豆传媒av| www.AV在线| 91在线无码精品秘入口三人| 江苏妇搡BBBB搡BBB| 涩久久久| 尤物网站在线观看| 亚洲国产无码在线| 日韩av免费| 黄色A网站| 91蝌蚪视频在线播放| 国产一级A片免费视频| 加勒比精品| 日韩中文字幕无码人妻| 亚洲AV无码蜜桃| 老太色HD色老太HD| 毛片二区| 亚洲日韩毛片| 日韩成人三级片| 久久综合中文| 日韩综合| 欧美一级高清片免费一级a| 激情视频免费在线观看| 久久草草热国产精品| 人妻少妇偷人精品无码免费| 懂色AV无码中字幕一区| 水果派中文解说AⅤ| 免费看一级无码成人片| 国产成人精品a区在线观看| 欧美黄色免费在线观看| 国产亲子乱XXXXinin| 久操影视| 福利视频免费观看| 日韩精品人妻中文字幕有| 一级片在线免费观看| 亚洲综合免费观看高清完整| 亚洲一区二区久久| 黄色视频网站在线免费观看| 69无码| 国精产品九九国精产品| 欧美肥臀| 成人毛片在线观看| 黄色视频免费观看| 亚洲天堂在线看| 亚洲影院在线观看| 影音先锋人妻资源| 51妺嘿嘿午夜福利视频| 日韩欧美精品在线观看| 激情淫荡少妇| 狠狠色五月| 学生妹一级片| 大香蕉久久| 91无码国产成人精品| 色五月中文字幕| 亚洲性爱网站| 国产精品久久在线| 俺也去AV| 日韩中文字幕在线观看| 国产精品一区av| 粉嫩小泬BBBBBB免费| 色就是色欧美| 无码蜜桃一区二区| 99人人操| 亚洲日色| 婷婷无码成人精品俺来俺去| 在线播放无码| A亚洲天堂| 免费看黄色AV| 午夜激情视频网站| 日本三级片免费观看| 91蜜桃视频在线观看| 婷婷丁香综合| 丁香四月婷婷| 日韩综合在线观看| 影音先锋AV啪啪资源| 国产成人在线精品| 欧美在线无码| 一区二区三区在线观看| 国产真人无码| 日本成人无码|