精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Hive必會SQL語法Explode 和 Lateral View

數據庫 MySQL
在業務系統中是存貯在非關系型數據庫中,用json存儲的概率比較大,直接導入hive為基礎的數倉系統中,就需要經過ETL過程解析這類數據,explode與lateral view在這種場景下大顯身手。

 [[385381]]

本文轉載自微信公眾號「Java大數據與數據倉庫」,作者劉不二。轉載本文請聯系Java大數據與數據倉庫公眾號。  

explode 和 lateral view

為什么把這兩個放一塊呢,因為這兩個經常放在一起用啊

explode與lateral view在關系型數據庫中本身是不該出現的,因為他的出現本身就是在操作不滿足第一范式的數據(每個屬性都不可再分),本身已經違背了數據庫的設計原理(不論是業務系統還是數據倉庫系統),不過大數據技術普及后,很多類似pv,uv的數據,在業務系統中是存貯在非關系型數據庫中,用json存儲的概率比較大,直接導入hive為基礎的數倉系統中,就需要經過ETL過程解析這類數據,explode與lateral view在這種場景下大顯身手。

explode用法

在介紹如何處理之前,我們先來了解下Hive內置的 explode 函數,官方的解釋是:explode() takes in an array (or a map) as an input and outputs the elements of the array (map) as separate rows. UDTFs can be used in the SELECT expression list and as a part of LATERAL VIEW. 意思就是 explode() 接收一個 array 或 map 類型的數據作為輸入,然后將 array 或 map 里面的元素按照每行的形式輸出。其可以配合 LATERAL VIEW 一起使用。光看文字描述很不直觀,咱們來看看幾個例子吧。

  1. hive (default)> select explode(array('A','B','C')); 
  2. OK 
  3. Time taken: 4.188 seconds, Fetched: 3 row(s) 
  4.  
  5. hive (default)> select explode(map('a', 1, 'b', 2, 'c', 3)); 
  6. OK 
  7. key    value 
  8. a    1 
  9. b    2 
  10. c    3  

explode函數接收一個數組或者map類型的數據,通常需要用split函數生成數組。

explode 配合解析Json 數組

這里有數據:

  1. {"info":[ 
  2.     {"AppName":"SogouExplorer_embedupdate","pepper":"-1"}, 
  3.     {"AppName":"SogouExplorer_embedupdate","pepper":"-1"}, 
  4.     {"AppName":"SogouExplorer_embedupdate","pepper":"-1"}, 
  5.     {"AppName":"2345Explorer_embedupdate","plugin":"-1"}, 
  6.     {"AppName":"SogouExplorer_embedupdate","pepper":"-1"
  7. ]} 

現在需要將AppName和pepper提取出來,然后按行存放,一行一個,首先我們按照上一節我們學習的Json 處理的函數進行嘗試

  1. select 
  2. get_json_object( 
  3.   '{"info":[ 
  4.     {"AppName":"SogouExplorer_embedupdate","pepper":"-1"}, 
  5.     {"AppName":"SogouExplorer_embedupdate","pepper":"-1"}, 
  6.     {"AppName":"SogouExplorer_embedupdate","pepper":"-1"}, 
  7.     {"AppName":"2345Explorer_embedupdate","plugin":"-1"}, 
  8.     {"AppName":"SogouExplorer_embedupdate","pepper":"-1"
  9.   ]}', 
  10.   "$.info[*].AppName" 
  11. ); 

如圖

image-20201231111231311

但是我們注意到這里雖然提取出來了但是返回值是一個字符串啊,我為啥知道它是字符串,但是看起來像是一個數組啊,因為我用explode 函數試過了,那接下來怎么處理呢,這個時候就可以需要配合split 處理了,為了方便操作我直接用上么的結果進行操作

  1. ["SogouExplorer_embedupdate","SogouExplorer_embedupdate","SogouExplorer_embedupdate","2345Explorer_embedupdate","SogouExplorer_embedupdate"

然我我們嘗試處理一下上面這個字符串,首先我們需要split 一下,但是在此之前我們需要將兩邊的中括號去掉,否則到時候我們的數據會包含這個兩個符號的

  1. select regexp_replace('["SogouExplorer_embedupdate","SogouExplorer_embedupdate","SogouExplorer_embedupdate","2345Explorer_embedupdate","SogouExplorer_embedupdate"]',"[\\[\\]]",''

然后我們就可以split和explode 的了

  1. select explode(split(regexp_replace('["SogouExplorer_embedupdate","SogouExplorer_embedupdate","SogouExplorer_embedupdate","2345Explorer_embedupdate","SogouExplorer_embedupdate"]',"[\\[\\]]",''),',')); 

image-20201231112616809

這里解析json數組,我們本質上還是使用regexp_replace替換掉中括號,然后再使用split函數拆分為數據,給explode去分裂成多行。上面的這種寫法有問題嗎,功能是可以完成,但是這里只是提出來了AppName 這個字段,還有一個字段沒有提取出來呢,要是想把它提取出來,上面的步驟你還得再來一遍才可以,接下來我們嘗試引入json_tuple來簡化一下我們的操作,我們先將其explode 成多行簡單json 字符串,然后再使用json_tuple 進行處理

  1. select 
  2. explode( 
  3.   split( 
  4.      regexp_replace( 
  5.         regexp_replace( 
  6.           get_json_object( 
  7.             '{"info":[ 
  8.               {"AppName":"SogouExplorer_embedupdate","pepper":"-1"}, 
  9.               {"AppName":"SogouExplorer_embedupdate","pepper":"-1"}, 
  10.               {"AppName":"SogouExplorer_embedupdate","pepper":"-1"}, 
  11.               {"AppName":"2345Explorer_embedupdate","plugin":"-1"}, 
  12.               {"AppName":"SogouExplorer_embedupdate","pepper":"-1"
  13.             ]}',"$.info"
  14.        ,'[\\[\\]]' ,''
  15.      ,'(},\\{)','}#\\{'
  16.     ,'#'
  17.  ); 

這里兩次調用了regexp_replace,第一次是為了去掉兩邊的中括號,第二次是為了將,jons 里面的逗號和分割json 的逗號進行區分,因為我們按照數組內容之間的分隔符進行split ,所以這里可以看做是將數組字符串的分隔符有逗號換成了# 號,然后就按照# split 了

image-20201231122203730

接下來就可以調用json_tuple 函數了

  1. select 
  2.     json_tuple(data,'AppName','pepper'
  3. from
  4.   select 
  5.   explode( 
  6.     split( 
  7.        regexp_replace( 
  8.           regexp_replace( 
  9.             get_json_object( 
  10.               '{"info":[ 
  11.                 {"AppName":"SogouExplorer_embedupdate","pepper":"-1"}, 
  12.                 {"AppName":"SogouExplorer_embedupdate","pepper":"-1"}, 
  13.                 {"AppName":"SogouExplorer_embedupdate","pepper":"-1"}, 
  14.                 {"AppName":"2345Explorer_embedupdate","plugin":"-1"}, 
  15.                 {"AppName":"SogouExplorer_embedupdate","pepper":"-1"
  16.               ]}',"$.info"
  17.          ,'[\\[\\]]' ,''
  18.        ,'(},\\{)','}#\\{'
  19.       ,'#'
  20.    ) as data 
  21. ) json_table; 

如圖

image-20201231122505355

這樣我們就將我們需要的字段解析出來了

lateral view

開始之前我們先說一下它的用法 LATERAL VIEW udtf(expression) tableAlias AS columnAlias,你可以將lateral view翻譯為側視圖

我們有這樣的一份樣本數據(

  1. 劉德華    演員,導演,制片人 
  2. 李小龍    演員,導演,制片人,幕后,武術指導 
  3. 李連杰    演員,武術指導 
  4. 劉亦菲    演員 

這里我們希望轉換成下面這樣的格式

  1. 劉德華 演員 
  2. 劉德華 導演 
  3. 劉德華 制片人 
  4. 李小龍 演員 
  5. 李小龍 導演 
  6. 李小龍 制片人 
  7. 李小龍 幕后 
  8. 李小龍 武術指導 
  9. create table ods.ods_actor_data( 
  10.     username string, 
  11.     userrole string 
  12. ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
  13. load data local inpath "/Users/liuwenqiang/workspace/hive/lateral.data" overwrite into table ods.ods_actor_data; 

如圖

image-20201231133130769

從我們前面的學習,我們知道這里應該用explode函數

  1. select explode(split(userrole,',')) from  ods.ods_actor_data; 

image-20201231134156444

理論上我們這下只要把username 也選出來就可以了

  1. select username,explode(split(userrole,',')) from  ods.ods_actor_data; 

Error: Error while compiling statement: FAILED: SemanticException [Error 10081]: UDTF's are not supported outside the SELECT clause, nor nested in expressions (state=42000,code=10081)

因為explode 是一個UDTF,所以你不能直接和其他字段一起使用,那應該怎么做呢在

  1. select 
  2.    username,role 
  3. from 
  4.     ods.ods_actor_data 
  5. LATERAL VIEW 
  6.     explode(split(userrole,',')) tmpTable as role 

如圖

image-20201231154758339

看起來到這里我們的實現就結束了

lateral view outer

為什么會多了一個 OUTER 關鍵字呢,其實你也可以猜到了outer join 有點像,就是為了避免explode 函數返回值是null 的時候,影響我們主表的返回,注意是null 而不是空字符串

  1. select 
  2.    username,role 
  3. from 
  4.     ods.ods_actor_data 
  5. LATERAL VIEW 
  6.      explode(array()) tmpTable as role 

如圖

image-20201231160414501

加上outer 關鍵字之后

  1. select 
  2.    username,role 
  3. from 
  4.     ods.ods_actor_data 
  5. LATERAL VIEW outer 
  6.     explode(array()) tmpTable as role 

如圖

image-20201231160459117

其實一個SQL你可以多次使用lateral view也是可以的,就像下面這樣

  1. SELECT * FROM exampleTable 
  2. LATERAL VIEW explode(col1) myTable1 AS myCol1 
  3. LATERAL VIEW explode(myCol1) myTable2 AS myCol2; 

lateral view 的實現原理是什么

首先我們知道explode()是一個UDTF 就是一個輸入進去,多個輸出出來,或者是進去一行,出來一列(多行)

image-20201231162007648

lateral view 關鍵字就是將每一行的特定字段交給explode 函數的表達式,然后將輸出結果和當前行做笛卡爾積,然后重復,直到循環完表里的全部數據,然后就變成下面裝了(圖中省略了傳給explode 字段的那一列)

image-20201231162254979

但其實到這里我就產生了一個疑問,為啥要這樣設計,直接將普通字段和UDTF 的函數的返回值一起查詢不好嗎,然后將原始字段和UDTF 的返回值做笛卡爾積就行了啊,為啥還要lateral view 呢,哈哈。

lateral view 中where 的使用

你可能會說where 不就那么用嗎,還有啥不一樣的,還真有,例如我上面的信息只要劉德華的,那你肯定會寫出下面的SQL

  1. select 
  2.     username,role 
  3. from 
  4.     ods.ods_actor_data 
  5.         LATERAL VIEW 
  6.     explode(split(userrole,',')) tmpTable as role 
  7. where 
  8.     username='劉德華' 

要是我只要導演的呢,但是我們知道userrole 這個字段是包沒有直接是導演的,但是又包含導演的演員,導演,制片人,幕后,武術指導,其實這個時候你可以用下面的別名字段role

  1. select 
  2.     username,role 
  3. from 
  4.     ods.ods_actor_data 
  5.         LATERAL VIEW 
  6.     explode(split(userrole,',')) tmpTable as role 
  7. where 
  8.     role="導演" 

如圖

image-20201231165856030

總結

一個SQL 里lateral view 你可以多次使用,就會多次做笛卡爾積;

UDTF 要配合lateral view 一起使用才可以;

其實回過頭來看的話,我們上面的處理過程就是將一行轉化為多行,典型的行轉列的實現,是SQL 面試的高頻考點;

 

責任編輯:武曉燕 來源: Java大數據與數據倉庫
相關推薦

2017-05-03 09:40:43

HIVEcollectexplode

2023-11-09 14:47:51

SQL工具數據庫

2020-04-15 10:58:10

MySQL數據庫SQL

2010-09-14 16:00:34

sql select語

2010-09-08 17:10:24

SQL循環語句

2010-09-24 19:08:08

SQL事務

2009-11-17 13:35:40

Oracle SQL語

2010-09-17 10:24:47

SQL中IS NULL

2011-08-23 13:16:41

SQLEXPLAIN

2010-09-26 10:27:22

SQL替換語句

2018-11-29 09:01:26

Apache FlinJOIN代碼

2023-03-28 07:36:01

SQL數據庫管理

2024-01-23 18:49:38

SQL聚合函數數據分析

2024-06-13 09:10:22

2010-10-19 14:45:01

SQL SERVER臨

2010-11-11 17:20:51

SQL Server創

2010-09-24 17:19:54

SQL中SUBSTRI

2010-11-12 13:40:38

動態sql語句

2010-11-09 10:10:08

SQL Server

2010-09-27 10:59:23

SQL SERVER事
點贊
收藏

51CTO技術棧公眾號

欧美一区二区三区喷汁尤物| 久久精品国产亚洲aⅴ | 男人c女人视频| 蜜桃视频久久一区免费观看入口 | 久久久久亚洲精品| 国产高潮呻吟久久| 欧美高清hd| 一本一道综合狠狠老| 在线视频一区观看| 五月激情婷婷综合| 精品一区二区三区影院在线午夜| 国模gogo一区二区大胆私拍| 日本成人免费在线观看| 狼人精品一区二区三区在线| 欧美日韩精品一区二区三区四区| 久久成人福利视频| 秋霞午夜在线观看| 91亚洲精品一区二区乱码| 国产日韩欧美一二三区| 国产一区二区99| 欧美国产91| 最近2019中文字幕大全第二页| 韩国av中国字幕| 欧美97人人模人人爽人人喊视频| 黄网站色欧美视频| 国产激情片在线观看| 高h视频在线| www.日韩在线| 伊人福利在线| 国产日产精品1区| 国产一区二区三区四区hd| 亚洲性在线观看| 香蕉亚洲视频| 国内精品美女av在线播放| 黄色香蕉视频在线观看| 精品一区不卡| 亚洲精品一区二三区不卡| 亚洲妇女无套内射精| 日韩免费在线电影| 欧洲国产伦久久久久久久| 日韩av在线播放不卡| 二区三区四区高清视频在线观看| 国产色综合一区| 欧美日产一区二区三区在线观看| 天堂网在线中文| 成人丝袜高跟foot| 成人欧美一区二区三区视频xxx| 一级片视频网站| 日韩影院在线观看| 国产成人综合精品| 成人av网站在线播放| 国产免费成人| 国产91精品黑色丝袜高跟鞋| 日韩av女优在线观看| 欧美日韩综合| 久久久久久亚洲精品中文字幕| 欧美黑人一级片| 欧美三级不卡| 高清一区二区三区日本久| 国产无遮挡又黄又爽又色| 亚洲成人在线| 欧美孕妇孕交黑巨大网站| 在线视频一区二区三区四区| 久久久久久亚洲精品杨幂换脸| 欧美中文在线观看国产| 久久亚洲精品石原莉奈| 久久这里有精品15一区二区三区| 国产成人小视频在线观看| 国产字幕在线观看| 美女任你摸久久| 亚洲www在线| 亚洲乱码精品久久久久..| 丁香六月久久综合狠狠色| 国产青春久久久国产毛片| 亚洲色欧美另类| 国产午夜精品一区二区三区四区| 亚洲精品久久久久久一区二区| 久草在现在线| 亚洲色图欧美在线| 欧美做暖暖视频| 伊人成综合网站| 欧美日韩在线播| 又色又爽又黄18网站| 欧美男人操女人视频| 在线日韩欧美视频| 日本老熟俱乐部h0930| 一本色道久久综合亚洲精品高清| 青青草原成人在线视频| 亚洲中文字幕在线观看| 国产精品1区2区| 久草一区二区| 国产日产一区二区| 欧美日韩午夜剧场| 91欧美视频在线| 爱高潮www亚洲精品| 亚洲人午夜色婷婷| 久草免费新视频| 视频一区视频二区中文| 91九色极品视频| 国产永久免费高清在线观看 | 日韩精品视频网站| 亚洲va男人天堂| 久热av在线| 一区二区三区中文字幕精品精品 | 亚洲国产女人aaa毛片在线| 欧美 日韩 成人| 精品9999| 91视频88av| 国产黄色免费在线观看| 亚洲一区二区免费视频| 久久国产激情视频| 亚洲精品白浆高清| 欧美激情va永久在线播放| 久久精品久久久久久久| 国产99久久久精品| 图片区小说区区亚洲五月| 日本成人不卡| 欧美精品 国产精品| 久久久久久九九九九九| 在线观看日韩av电影| 91人人爽人人爽人人精88v| 国产视频第一页在线观看| 亚洲国产wwwccc36天堂| av在线网站免费观看| 欧美一区二区三| 日本精品性网站在线观看| 亚洲精品一级片| 亚洲男同性视频| 日本77777| 日本一二区不卡| 国产精品扒开腿做爽爽爽男男| 你懂的网站在线| 亚洲综合图片区| 少妇愉情理伦片bd| 先锋资源久久| 成人av在线亚洲| 在线免费观看黄色| 欧美专区在线观看一区| 91成人在线免费视频| 老鸭窝91久久精品色噜噜导演| 国产在线精品一区二区中文| 久久香蕉一区| 亚洲第一精品夜夜躁人人躁| 久久久久97国产| 粉嫩一区二区三区性色av| 男女爱爱视频网站| 久久综合给合| 欧美日韩高清在线观看| 亚洲第一成人av| 亚洲一区影音先锋| 麻豆短视频在线观看| 激情综合电影网| 国产丝袜不卡| 自拍视频在线看| 亚洲午夜av电影| 中文字幕欧美在线观看| 国产精品国产三级国产普通话99 | 蜜臀精品一区二区| 国产嫩草在线观看| heyzo久久| 国产精品视频专区| 黄色成年人视频在线观看| 日韩欧美在线1卡| 国产大片aaa| av一区二区不卡| 黄色a级片免费| 久久激情电影| 亚洲影院高清在线| 成入视频在线观看| 亚洲视频axxx| 国产裸体无遮挡| 亚洲综合色自拍一区| 少妇一级淫免费观看| 日韩激情视频在线观看| 亚洲一区三区视频在线观看| 麻豆久久一区| 2019最新中文字幕| www.在线视频.com| 欧美一区二区三区免费视频 | 巨大荫蒂视频欧美大片| 欧美成人欧美edvon| 午夜精品久久久久久久久久久久久蜜桃| 久久亚洲精精品中文字幕早川悠里 | 亚洲三级免费| 日韩av一级大片| 久久伊人久久| 热久久免费视频精品| 秋霞午夜在线观看| 日韩av在线不卡| 亚洲天堂久久久久| 亚洲成人综合网站| 欧美激情 一区| 成人综合在线观看| 日韩免费高清在线| 欧美日韩ab| 日韩国产在线一区| 中文字幕一区日韩精品| 国产成人精品电影久久久| 八戒八戒神马在线电影| 亚洲毛茸茸少妇高潮呻吟| av网站在线免费看| 色婷婷国产精品综合在线观看| 国产精品视频一区二区三| 久久婷婷色综合| 精品人妻一区二区乱码| 日韩精品一级二级| 妺妺窝人体色777777| 99久久婷婷| 欧美极品日韩| 99亚洲乱人伦aⅴ精品| 国产欧美一区二区三区久久| 日韩脚交footjobhd| 欧美日韩成人在线播放| av小片在线| 亚洲精品久久久久中文字幕欢迎你| 亚洲无码精品在线播放| 色视频欧美一区二区三区| 欧美精品一区二区蜜桃| 国产精品视频第一区| 黄色a一级视频| 国产成人精品免费视频网站| 国内国产精品天干天干| 日日欢夜夜爽一区| 国产免费毛卡片| 亚洲国产免费看| 欧美亚洲黄色片| 中文字幕一区二区三区乱码图片| 天堂精品视频| 神马电影久久| 欧美凹凸一区二区三区视频| 欧美交a欧美精品喷水| 99re在线观看| 视频免费一区二区| 亚洲一区中文字幕| 清纯唯美激情亚洲| 91免费版网站入口| 99久久久国产| 成人国产精品免费视频| 日日夜夜亚洲| 国产日韩精品在线播放| 日韩综合av| 成人做爽爽免费视频| 欧美男男gaygay1069| 国产99久久久欧美黑人| 韩国主播福利视频一区二区三区| 欧美专区福利在线| 手机在线观看av网站| 97涩涩爰在线观看亚洲| 97人澡人人添人人爽欧美| 欧美激情精品在线| heyzo在线| 欧美性受xxxx白人性爽| 午夜裸体女人视频网站在线观看| 欧美专区日韩视频| 欧美日韩视频网站| 国产精品成人国产乱一区| 日日av拍夜夜添久久免费| 国产精品久久国产精品99gif| 欧美日韩尤物久久| 国产主播在线一区| 精品一区二区三区在线观看视频| 99久久国产免费免费| 精品综合久久88少妇激情| 久久国产精品免费一区| 国产一区二区在线| 伊人色综合久久天天五月婷| 亚洲色图二区| 成年人看的毛片| 欧美亚洲免费| 99热一区二区| 成年人国产精品| jizz中文字幕| 亚洲久本草在线中文字幕| 国产午夜久久久| 一本大道久久a久久综合| 中文字幕观看视频| 欧美一二区视频| 视频一区二区三区在线看免费看| 国产一区二区三区高清在线观看| 免费网站成人| 538国产精品一区二区在线| 成人va天堂| 97人人模人人爽人人喊38tv| 免费av一区| 久久精品在线免费视频| 国产欧美成人| theporn国产精品| av高清久久久| 极品美妇后花庭翘臀娇吟小说| 亚洲一线二线三线久久久| 欧美 亚洲 另类 激情 另类| 日韩欧美123| av网站在线免费播放| 欧美国产日韩二区| 九色成人搞黄网站| 国产午夜精品一区| 无码一区二区三区视频| 欧美国产亚洲一区| 国产一区二区三区免费在线观看| 人妻熟女aⅴ一区二区三区汇编| √…a在线天堂一区| 成人午夜淫片100集| 日韩一区二区麻豆国产| 成人午夜电影在线观看| 97在线看免费观看视频在线观看| 亚洲天堂网站| 神马一区二区影院| 国产农村妇女精品一区二区| av在线网站免费观看| 国产精品女同互慰在线看| 国产又黄又爽又色| 欧美成人性福生活免费看| 黄av在线播放| 国产精品自产拍高潮在线观看| 日韩欧美黄色| 国产乱淫av片杨贵妃| 韩国v欧美v日本v亚洲v| 国产高潮呻吟久久| 日韩欧美国产激情| 天堂网在线资源| 久久久久五月天| 最新精品在线| 国产日韩亚洲欧美在线| 国模少妇一区二区三区| 黄大色黄女片18免费| 欧美性色xo影院| 亚洲色图欧美视频| 欧美精品videos性欧美| 国产精品视频一区视频二区| 亚洲一区二区三区精品在线观看 | 黄色a一级视频| 五月婷婷欧美视频| 老熟妇高潮一区二区高清视频| 欧美老女人在线视频| 精品国模一区二区三区欧美| 中文字幕久久一区| 久久精品国产久精国产| 精品日韩在线视频| 欧美影院一区二区三区| 阿v免费在线观看| 国产成人久久久精品一区| 久久av超碰| 黄色三级视频片| 中文子幕无线码一区tr| 国产在线一级片| 日韩中文字幕第一页| 国内欧美日韩| 中文字幕欧美日韩一区二区三区| 九九在线精品视频| 日本激情视频一区二区三区| 欧美日本韩国一区| 国产乱色在线观看| 国产精品久久久久久久天堂第1集| 亚洲视频综合| aaaaaav| 在线一区二区视频| 米奇777四色精品人人爽| 国产精品亚洲片夜色在线| 亚洲国产老妈| 无码人妻精品一区二区三| 欧美日韩午夜激情| youjizz在线播放| 91久久偷偷做嫩草影院| 亚洲精品1区2区| 尤物视频最新网址| 欧美日韩免费观看一区二区三区| 欧美高清视频| 高清免费日韩| 久久精品首页| 黄色录像免费观看| 精品国产一区二区三区四区四| 蜜桃视频在线观看免费视频| 日本一区高清不卡| 国产在线国偷精品产拍免费yy| 久草免费新视频| 亚洲人成网站777色婷婷| 久久女人天堂| 国产爆乳无码一区二区麻豆| 久久综合九色综合久久久精品综合| 中文字幕+乱码+中文乱码91| 另类美女黄大片| 亚洲区小说区图片区qvod按摩| 国产野外作爱视频播放| 一区二区三区精品视频在线| 男人久久精品| 亚洲一区二区三区久久| 亚洲综合国产激情另类一区| 99热这里只有精品4| 337p日本欧洲亚洲大胆色噜噜| 午夜激情成人网| 国产又粗又猛又爽又黄的网站| 久久伊人中文字幕| 精品区在线观看| 国产精品久久久91| 亚洲经典自拍| 五月天婷婷色综合| 亚洲视频第一页| 精品成人自拍视频| 亚洲五月激情网| 在线观看日韩av先锋影音电影院|