成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 創(chuàng)建SparkSession和sparkSQL的詳細(xì)過程

創(chuàng)建SparkSession和sparkSQL的詳細(xì)過程

熱門標(biāo)簽:西青語音電銷機器人哪家好 成都呼叫中心外呼系統(tǒng)哪家強 地圖標(biāo)注與注銷 旅游廁所地圖標(biāo)注怎么弄 南昌地圖標(biāo)注 電梯新時達(dá)系統(tǒng)外呼顯示e 宿州電話機器人哪家好 無錫智能外呼系統(tǒng)好用嗎 百應(yīng)電話機器人總部

一、概述

spark 有三大引擎,spark core、sparkSQL、sparkStreaming,

spark core 的關(guān)鍵抽象是 SparkContext、RDD;

SparkSQL 的關(guān)鍵抽象是 SparkSession、DataFrame;

sparkStreaming 的關(guān)鍵抽象是 StreamingContext、DStream

SparkSession 是 spark2.0 引入的概念,主要用在 sparkSQL 中,當(dāng)然也可以用在其他場合,他可以代替 SparkContext;

SparkSession 其實是封裝了 SQLContext 和 HiveContext

(1) 在Spark1.6 中我們使用的叫Hive on spark,主要是依賴hive生成spark程序,有兩個核心組件SQLcontext和HiveContext。

這是Spark 1.x 版本的語法

//set up the spark configuration and create contexts
 val sparkConf = new SparkConf().setAppName("SparkSessionZipsExample").setMaster("local")
 
 
// your handle to SparkContext to access other context like SQLContext
 val sc = new SparkContext(sparkConf).set("spark.some.config.option", "some-value")
 val sqlContext = new org.apache.spark.sql.SQLContext(sc)

(2)Spark2.0中我們使用的就是sparkSQL,是后繼的全新產(chǎn)品,解除了對Hive的依賴。

從Spark2.0以上的版本開始,spark是使用全新的SparkSession接口代替Spark1.6 中的SQLcontext和HiveContext 來實現(xiàn)對數(shù)據(jù)的加載、轉(zhuǎn)換、處理等工作,并且實現(xiàn)了SQLcontext和HiveContext的所有功能。

在新版本中并不需要之前那么繁瑣的創(chuàng)建很多對象,只需要創(chuàng)建一個SparkSession對象即可。SparkSession支持從不同的數(shù)據(jù)源加載數(shù)據(jù),并把數(shù)據(jù)轉(zhuǎn)換成DataFrame,并支持把DataFrame轉(zhuǎn)換成SQLContext自身中的表。然后使用SQL語句來操作數(shù)據(jù),也提供了HiveQL以及其他依賴于Hive的功能支持。

二、創(chuàng)建SparkSession

SparkSession 是 Spark SQL 的入口。使用 Dataset 或者 Dataframe 編寫 Spark SQL 應(yīng)用的時候,第一個要創(chuàng)建的對象就是 SparkSession。Builder 是 SparkSession 的構(gòu)造器。 通過 Builder, 可以添加各種配置,并通過 stop 函數(shù)來停止 SparkSession。

Builder 的方法如下:

import org.apache.spark.sql.SparkSession
val spark: SparkSession = SparkSession.builder
 .appName("My Spark Application")  //設(shè)置 application 的名字
 .master("local[*]")             
 .enableHiveSupport() //增加支持 hive Support      
 .config("spark.sql.warehouse.dir", "target/spark-warehouse") //設(shè)置各種配置
 .getOrCreate     //獲取或者新建一個 sparkSession

(1)設(shè)置參數(shù)

創(chuàng)建SparkSession之后可以通過 spark.conf.set 來設(shè)置運行參數(shù)

//配置設(shè)置
 spark.conf.set("spark.sql.shuffle.partitions", 6)
 spark.conf.set("spark.executor.memory", "2g")
 
 //獲取配置,可以使用Scala的迭代器來讀取configMap中的數(shù)據(jù)。 
 val configMap:Map[String, String] = spark.conf.getAll()

(2)讀取元數(shù)據(jù)

如果需要讀取元數(shù)據(jù)(catalog),可以通過SparkSession來獲取。

spark.catalog.listTables.show(false)
 spark.catalog.listDatabases.show(false)

這里返回的都是Dataset,所以可以根據(jù)需要再使用Dataset API來讀取

catalog 和 schema 是兩個不同的概念
Catalog是目錄的意思,從數(shù)據(jù)庫方向說,相當(dāng)于就是所有數(shù)據(jù)庫的集合;
Schema是模式的意思, 從數(shù)據(jù)庫方向說, 類似Catelog下的某一個數(shù)據(jù)庫;

(3)創(chuàng)建Dataset和Dataframe

通過SparkSession來創(chuàng)建Dataset和Dataframe有多種方法。

通過range()方法來創(chuàng)建dataset
通過createDataFrame()來創(chuàng)建dataframe。
// create a Dataset using spark.range starting from 5 to 100,
// with increments of 5
val numDS = spark.range(5, 100, 5)//創(chuàng)建dataset
 
// reverse the order and display first 5 items
numDS.orderBy(desc("id")).show(5)
 
//compute descriptive stats and display them
numDs.describe().show()
 
// create a DataFrame using spark.createDataFrame from a List or Seq
val langPercentDF = spark.createDataFrame( List( ("Scala", 35), 
    ("Python", 30), ("R", 15), ("Java", 20)) )//創(chuàng)建dataframe
 
//rename the columns
val lpDF = langPercentDF.withColumnRenamed("_1", "language").
    withColumnRenamed("_2", "percent")
 
//order the DataFrame in descending order of percentage
lpDF.orderBy(desc("percent")).show(false)

(4)讀取數(shù)據(jù)

可以用SparkSession讀取JSON、CSV、TXT 和 parquet表。

import spark.implicits //使RDD轉(zhuǎn)化為DataFrame以及后續(xù)SQL操作
//讀取JSON文件,生成DataFrame
val jsonFile = args(0)
val zipsDF = spark.read.json(jsonFile)

(5)使用SparkSQL

借助SparkSession用戶可以像SQLContext一樣使用Spark SQL的全部功能。

zipsDF.createOrReplaceTempView("zips_table")//對上面的dataframe創(chuàng)建一個表
zipsDF.cache()//緩存表
 
val resultsDF = spark.sql("SELECT city, pop, state, zip FROM zips_table")
 
//對表調(diào)用SQL語句
resultsDF.show(10)//展示結(jié)果

(6)存儲/讀取Hive表

下面的代碼演示了通過SparkSession來創(chuàng)建Hive表并進(jìn)行查詢的方法。

//drop the table if exists to get around existing table error
 spark.sql("DROP TABLE IF EXISTS zips_hive_table")
 
 //save as a hive table
 spark.table("zips_table").write.saveAsTable("zips_hive_table")
 
 //make a similar query against the hive table
 val resultsHiveDF = spark.sql("SELECT city, pop, state, 
        zip FROM zips_hive_table WHERE pop > 40000")
 
 resultsHiveDF.show(10)

三、 SQLContext

它是 sparkSQL 的入口點,sparkSQL 的應(yīng)用必須創(chuàng)建一個 SQLContext 或者 HiveContext 的類實例

from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession, SQLContext, HiveContext
 
conf = SparkConf().setAppName('test').setMaster('yarn')
sc = SparkContext(conf=conf)
 
sqlc = SQLContext(sc)
print(dir(sqlc))
# 'cacheTable', 'clearCache', 'createDataFrame', 'createExternalTable', 'dropTempTable', 'getConf', 'getOrCreate', 'newSession', 'range', 'read', 'readStream',
# 'registerDataFrameAsTable', 'registerFunction', 'registerJavaFunction', 'setConf', 'sparkSession', 'sql', 'streams', 'table', 'tableNames', 'tables', 'udf', 'uncacheTable'
 
### sqlcontext 讀取數(shù)據(jù)也自動生成 df
data = sqlc.read.text('/usr/yanshw/test.txt')
print(type(data))

四、 HiveContext

它是 sparkSQL 的另一個入口點,它繼承自 SQLContext,用于處理 hive 中的數(shù)據(jù)

HiveContext 對 SQLContext 進(jìn)行了擴(kuò)展,功能要強大的多

1. 它可以執(zhí)行 HiveSQL 和 SQL 查詢

2. 它可以操作 hive 數(shù)據(jù),并且可以訪問 HiveUDF

3. 它不一定需要 hive,在沒有 hive 環(huán)境時也可以使用 HiveContext

注意,如果要處理 hive 數(shù)據(jù),需要把 hive 的 hive-site.xml 文件放到 spark/conf 下,HiveContext 將從 hive-site.xml 中獲取 hive 配置信息;

如果 HiveContext 沒有找到 hive-site.xml,他會在當(dāng)前目錄下創(chuàng)建 spark-warehouse 和 metastore_db 兩個文件夾

from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession, SQLContext, HiveContext
 
conf = SparkConf().setAppName('test').setMaster('yarn')
sc = SparkContext(conf=conf)
## 需要把 hive/conf/hive-site.xml 復(fù)制到 spark/conf 下
hivec = HiveContext(sc)
print(dir(hivec))
# 'cacheTable', 'clearCache', 'createDataFrame', 'createExternalTable', 'dropTempTable', 'getConf', 'getOrCreate', 'newSession', 'range', 'read', 'readStream','refreshTable',
# 'registerDataFrameAsTable', 'registerFunction', 'registerJavaFunction', 'setConf', 'sparkSession', 'sql', 'streams', 'table', 'tableNames', 'tables', 'udf', 'uncacheTable'
 
data = hivec.sql('''select * from hive1101.person limit 2''')
print(type(data))

SparkSession 創(chuàng)建

from pyspark.sql import SparkSession
 
 
### method 1
sess = SparkSession.builder \

    .appName("aaa") \

    .config("spark.driver.extraClassPath", sparkClassPath) \

    .master("local") \

    .enableHiveSupport() \  # sparkSQL 連接 hive 時需要這句
    .getOrCreate()      # builder 方式必須有這句
 
### method 2
conf = SparkConf().setAppName('myapp1').setMaster('local[4]')   # 設(shè)定 appname 和 master
sess = SparkSession.builder.config(conf=conf).getOrCreate() # builder 方式必須有這句
 
### method 3
from pyspark import SparkContext, SparkConf
conf = SparkConf().setAppName('myapp1').setMaster('local[4]')   # 設(shè)定 appname 和 master
sc = SparkContext(conf=conf)
sess = SparkSession(sc)

1)文件數(shù)據(jù)源

from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession, SQLContext, HiveContext
 
conf = SparkConf().setAppName('test').setMaster('yarn')
sc = SparkContext(conf=conf)
 
#### 替代了 SQLContext 和 HiveContext,其實只是簡單的封裝,提供了統(tǒng)一的接口
spark = SparkSession(sc)
print(dir(spark))
# 很多屬性,我把私有屬性刪了
# 'Builder','builder', 'catalog', 'conf', 'createDataFrame', 'newSession', 'range', 'read', 'readStream','sparkContext', 'sql', 'stop', 'streams', 'table', 'udf', 'version'
 
### sess 讀取數(shù)據(jù)自動生成 df
data = spark.read.text('/usr/yanshw/test.txt')      #read 可讀類型 [ 'csv', 'format', 'jdbc', 'json', 'load', 'option', 'options', 'orc', 'parquet', 'schema', 'table', 'text']
print(type(data))       # class 'pyspark.sql.dataframe.DataFrame'>

2) Hive 數(shù)據(jù)源

## 也需要把 hive/conf/hive-site.xml 復(fù)制到 spark/conf 下
spark = SparkSession.builder.appName('test').master('yarn').enableHiveSupport().getOrCreate()
 
hive_data = spark.sql('select * from hive1101.person limit 2')
print(hive_data)        # DataFrame[name: string, idcard: string]

SparkSession vs SparkContext

SparkSession 是 spark2.x 引入的新概念,SparkSession 為用戶提供統(tǒng)一的切入點,字面理解是創(chuàng)建會話,或者連接 spark

在 spark1.x 中,SparkContext 是 spark 的主要切入點,由于 RDD 作為主要的 API,我們通過 SparkContext 來創(chuàng)建和操作 RDD,

SparkContext 的問題在于:

1. 不同的應(yīng)用中,需要使用不同的 context,在 Streaming 中需要使用 StreamingContext,在 sql 中需要使用 sqlContext,在 hive 中需要使用 hiveContext,比較麻煩

2. 隨著 DataSet 和 DataFrame API 逐漸成為標(biāo)準(zhǔn) API,需要為他們創(chuàng)建接入點,即 SparkSession

SparkSession 實際上封裝了 SparkContext,另外也封裝了 SparkConf、sqlContext,隨著版本增加,可能更多,

所以我們盡量使用 SparkSession ,如果發(fā)現(xiàn)有些 API 不在 SparkSession 中,也可以通過 SparkSession 拿到 SparkContext 和其他 Context 等

在 shell 操作中,原生創(chuàng)建了 SparkSession,故無需再創(chuàng)建,創(chuàng)建了也不會起作用

在 shell 中,SparkContext 叫 sc,SparkSession 叫 spark。

到此這篇關(guān)于SparkSession和sparkSQL的文章就介紹到這了,更多相關(guān)SparkSession和sparkSQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • SparkSQl簡介及運行原理
  • SparkSQL使用快速入門
  • IDEA 開發(fā)配置SparkSQL及簡單使用案例代碼
  • SparkSQL讀取hive數(shù)據(jù)本地idea運行的方法詳解
  • DataFrame:通過SparkSql將scala類轉(zhuǎn)為DataFrame的方法
  • 淺談DataFrame和SparkSql取值誤區(qū)

標(biāo)簽:贛州 西安 七臺河 濰坊 雅安 許昌 渭南 辛集

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《創(chuàng)建SparkSession和sparkSQL的詳細(xì)過程》,本文關(guān)鍵詞  創(chuàng)建,SparkSession,和,sparkSQL,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《創(chuàng)建SparkSession和sparkSQL的詳細(xì)過程》相關(guān)的同類信息!
  • 本頁收集關(guān)于創(chuàng)建SparkSession和sparkSQL的詳細(xì)過程的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美极品视频| 国产精品va无码一区二区三区| 亚洲精品在线二区| 国产精品bbw一区二区三区| 国产精品免费在线播放| 一个人看的www视频免费在线观看| 18岁网站在线观看| 在线播放亚洲激情| 欧美日韩久久婷婷| 欧美激情亚洲一区| 国产精品999视频| 老鸭窝亚洲一区二区三区| 天天躁日日躁狠狠躁欧美| 第一社区sis001原创亚洲| 亚洲精品在线观看网站| av手机在线播放| 久久爱.com| 日韩av在线免播放器| 久久伊人精品一区二区三区| 天堂av中文在线观看| 色片在线免费观看| 久久夜色精品国产噜噜av小说| 蜜桃传媒麻豆第一区在线观看| 日韩精品另类天天更新| 国产极品模特精品一二| av官网在线播放| 好吊妞视频一区二区三区| 99久精品国产| 日韩中文字幕在线视频| www.日韩系列| 欧美与黑人午夜性猛交久久久| 永久免费在线| 久久精品国产2020观看福利| 欧美视频福利| 亚洲精品一区二区三区婷婷月| 日韩欧美在线视频| 日韩一级高清毛片| 人人干人人干人人干| 年下总裁被打光屁股sp| 国产福利精品一区| 日韩在线视频二区| 欧美精品色视频| heyzo高清国产精品| 国产精品午夜免费| 亚洲激情在线观看视频免费| 欧美日韩一区在线观看| 毛片免费看不卡网站| 国产一区二中文字幕在线看| 一级做a爱片久久毛片| 国产精品视频在线播放| 国产在线观看无码免费视频| 一二三四在线视频观看社区| 久久99久久久精品欧美| 经典三级久久| 日韩一区二区三区在线播放| 国内精品久久久久久| caoporn91| 色大18成网站www在线观看| 亚洲欧洲一区二区福利| 国产又爽又黄的激情精品视频| 米奇在线777| 亚洲深夜福利视频| 欧美三级自拍| 日韩精品乱码av一区二区| 视频一区日韩| 日本黄色网址大全| 国产91综合网| 污污网站在线| 国产成人香蕉在线视频网站| 日本在线成人| 91啪九色porn原创视频在线观看| 97精品超碰一区二区三区| 亚洲视频色图| 欧美丝袜丝nylons| 日本中文字幕不卡| 99产精品成人啪免费网站| 噜噜噜躁狠狠躁狠狠精品视频| 91成人天堂久久成人| 欧美孕妇性xx| 老熟妇高潮一区二区高清视频| 久草在线看片| 黄色18在线观看| 91精品久久久久久久久久不卡| 天天干中文字幕| 久九九久频精品短视频| 国产一级黄色录像| 亚洲+变态+欧美+另类+精品| 欧美一区三区二区在线观看| 免费在线午夜视频| 天堂av在线网站| 日本黄色片一级片| 天天操天天操天天色天天要| 欧美色图色综合| japanese在线| 91亚洲精品乱码久久久久久蜜桃| 美女网站久久| 日韩欧美中文视频| 成人网欧美在线视频| 在线日本高清免费不卡| 农村末发育av片一区二区| 天天射夜夜骑| 国产裸体写真av一区二区| 日韩精品一区二区在线观看| 亚洲最新视频在线观看| 日韩亚洲欧美一区二区| 精品推荐国产麻豆剧传媒| 国产aⅴ精品一区二区四区| 国产免费观看久久| 亚洲小少妇裸体bbw| 国产一区二区在线视频| 国产一区二区99| 久久.com| 欧在线一二三四区| 日本少妇xxxx动漫| 97人洗澡人人免费公开视频碰碰碰| 国产美女娇喘av呻吟久久| 91国内精品久久| 欧美日韩国产一区中文午夜| 免费黄色片网站| 97免费视频在线| 国产日韩欧美一区二区三区视频| 小次郎av收藏家| 亚洲综合一区二区不卡| 免费a级毛片永久免费| 天堂中文视频在线| 五月婷婷一区二区| 在线视频第一页| 久久日文中文字幕乱码| 日韩aaaa| 国偷自产av一区二区三区麻豆| 一区二区三区在线播放欧美| 国产亚洲欧美色| 黄色软件视频在线观看| 一级毛片电影| 亚洲国产一区二区三区在线播| 37p粉嫩大胆色噜噜噜| 国产在线视频不卡| 黑人精品xxx一区一二区| 在线视频亚洲一区| 波多野结衣在线高清| 免费在线观看污视频| 精品国产乱码久久久久久婷婷| 国产精品国产自产拍高清av| 美丽的姑娘在线观看免费动漫| 精品熟妇无码av免费久久| 日韩欧美中文一区二区| 亚洲在线观看| 色婷婷综合久久久久| 婷婷在线视频观看| 韩国福利视频一区| 国产乱码精品一区二区三区忘忧草| 999视频在线观看| 欧美激情性做爰免费视频| 欧美 丝袜 自拍 制服 另类| 国产成人精品亚洲日本在线观看| 国产日韩欧美视频在线| 欧美专区日韩视频| 国产高潮流白浆喷水视频| 久久亚洲精品伦理| 免费日本一区二区三区视频| 人人草人人干| 久久99国产成人小视频| 中国字幕a在线看韩国电影| 精品国免费一区二区三区| 少妇高潮喷水在线观看| 国产欧美精品久久| 少妇高潮喷水在线观看| 欧美一区二区三级| 欧美男人天堂网| 中文字幕人妻一区二区| 国产白丝网站精品污在线入口| 国产ts变态重口人妖hd| 中文字幕 日韩 欧美| 精品国产一区二区三区成人影院| 美女激情网站| 久久综合九色综合欧美亚洲| 久久国产精品色| av麻豆国产| 亚洲视频天天射| 欧美肉体xxxx裸体137大胆| 桃花岛成人影院| 99在线热播精品免费| 黄污视频在线观看| 亚洲综合欧美| 9999精品免费视频| 奇米一区二区三区| 日本在线аv| 国产传媒久久久| 精品久久久香蕉免费精品视频| 老司机av网站| 日韩大片一区二区| 热色播在线视频| 欧美哺乳videos| av官网在线观看| 久久久精品在线观看| 999www人成免费视频| 视频一区二区三区不卡| 亚洲小说欧美另类激情| 国产网站免费看| 亚洲人精品一区| 日韩av免费网址| 国产欧美三级电影| 久久婷婷麻豆| 亚洲愉拍自拍另类高清精品| 国产一卡二卡在线播放| 欧美国产日本视频| 日韩激情电影| 日韩高清av电影| 国产精品一码二码三码在线| 超碰在线最新网址| 久久久无码人妻精品一区| china中国猛gary| 色呦色呦色精品| 91av在线不卡| 国产在线一区二| 大黄网站在线观看| 欧美日韩亚洲一区二区三区四区| 日本一区二区三区在线观看视频| 亚洲午夜激情影院| 亚洲一区二区黄色| 日本成人免费视频| 国产精品久久久一区| 9i精品一二三区| 亚洲图片欧美午夜| 日产欧产va高清| 男男互摸gay网站| 成人免费视频视频在线观看免费| 欧美一级网站| 国产999精品久久久| 欧美三级电影一区| 国产精品一区二区三区av| 4438全国亚洲精品观看视频| 国产精品久久久久一区| 毛片在线免费播放| 国产xxxxx18| 国产性猛交xxxx免费看久久| 超碰超碰人人人人精品| 老司机深夜福利网站| 高清视频在线www色| 一区二区在线观| 中文字幕被公侵犯的漂亮人妻| 成人av免费电影| 日日骚av一区二区| 中文字幕亚洲在| 中文字幕久久精品一区二区| 91精品国产乱码久久久张津瑜| 日本黄在线观看| 亚洲国产一区二区三区高清| 一区二区在线观| 国产成人自拍高清视频在线免费播放| 国产啊啊啊视频在线观看| 亚洲综合av一区| 在线观看日本一区| 免费看啪啪网站| 欧美日韩一卡| 欧美在线视频网| 99久久精品免费视频| 成人手机电影网| 欧洲一区二区三区在线| 国产免费久久精品| 诱人的瑜伽老师3hd中字| 久久成人精品电影| 亚洲AV无码成人精品区明星换面| 亚洲欧美日韩一区二区三区四区| 国产女主播一区二区三区| 日韩美女视频网站| 女同互忝互慰dv毛片观看| 奇米网一区二区| 91香蕉一区二区三区在线观看| 亚洲欧美高清视频| 国产伦精品一区二区三区免费视频| gv天堂gv无码男同在线观看| 日本黄色福利视频| 欧美日本国产一区| 国产一区二区三区福利| 美国毛片一区二区| 欧美黄网在线观看| 九九九九九九精品| 欧美日韩在线综合| 精品51国产黑色丝袜高跟鞋| 亚洲欧洲一区| 中文字幕乱码视频| 麻豆视频在线观看免费网站| 91黄色在线视频| 日本不良网站在线观看| 九色porny自拍视频| 日韩激情一二三区| 成av人片一区二区| 欧美日韩免费在线| 四虎永久在线观看免费网站网址| 亚洲精品四区| 国产在线免费观看| 亚洲偷欧美偷国内偷| 国产鲁鲁视频在线观看免费| 国产精品欧美久久久久一区二区| 午夜精品久久久久久久99老熟妇| 亚洲欧美日韩免费| 欧美电影在线观看免费| 国产真实生活伦对白| 精品成人免费| 先锋在线资源一区二区三区| 影音先锋男人看片资源站| 久久伊人精品天天| 欧美在线一二三区| 能在线观看的av网站| 日韩一区二区三区xxxx| 亚洲精品成人av| 亚洲男同1069视频| 亚洲欧美日韩综合aⅴ视频| 黄页免费在线观看视频| 99久久婷婷国产| 亚洲性线免费观看视频成熟| 国产精品久久久久久免费观看| 天天综合日日夜夜精品| 姝姝窝人体www聚色窝| 一区二区三区欧美精品| 欧美日韩国产不卡在线看| 日韩欧中文字幕| 国产美女裸体无遮挡免费视频| 午夜精品视频在线观看一区二区| 亚洲精品小说| 欧美片在线播放| 99精品视频免费观看| 久久久精品五月天| 国产欧美日韩精品高清二区综合区| 99精品美女视频在线观看热舞| 久久精品国产亚洲AV熟女| jizz免费观看|