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

大數據實時分析:Flink中的Table API

大數據 數據分析
雖然大多數基于 Flink SQL 的在線編輯和任務執行引擎都是通過 Table API 實現的,但還有其他方法可以實現類似的功能,包括直接使用 SQL API、Flink SQL CLI、REST API、Flink Dashboard 和 Flink SQL Gateway 等。

TableAPI

Apache Flink 的 Table API 是一個統一的關系式 API,適用于流處理和批處理。它提供了一種高級別的、聲明式的方式來處理數據流和批量數據,使得數據處理變得更加直觀和簡潔。Table API 和 SQL API 緊密集成,可以相互轉換,提供了強大的靈活性和功能。

Table API 的主要特性

統一的批處理和流處理

  • Table API 支持批處理和流處理,可以對動態數據流和靜態數據集使用相同的 API。

聲明式查詢

  • 用戶可以使用類似 SQL 的語法編寫查詢,而不需要關注底層的執行細節。

多種數據源和目標

  • 支持多種數據源和數據匯,包括 Kafka、文件系統、JDBC、Elasticsearch 等。

與 SQL 集成

  • 可以在 Table API 中使用 SQL 查詢,或者將 Table API 查詢結果轉換為 SQL 查詢。

基本使用流程

設置執行環境

  • 創建 StreamExecutionEnvironment 或 ExecutionEnvironment 作為基礎環境。
  • 創建 StreamTableEnvironment 或 TableEnvironment 進行 Table API 操作。

定義表

  • 通過連接器定義源表和目標表。

編寫查詢

  • 使用 Table API 編寫查詢,包括過濾、選擇、聚合、連接等操作。

執行查詢

  • 將查詢結果寫入目標表,或者直接觸發查詢執行。

示例代碼

以下是一個基本的 Flink Table API 示例,包括設置環境、定義表和執行查詢。

// 設置執行環境
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env);
// 定義 Kafka 源表
String sourceDDL = "CREATE TABLE kafka_source ("
        + " user_id STRING,"
        + " action STRING,"
        + " timestamp TIMESTAMP(3),"
        + " WATERMARK FOR timestamp AS timestamp - INTERVAL '5' SECOND"
        + ") WITH ("
        + " 'connector' = 'kafka',"
        + " 'topic' = 'input_topic',"
        + " 'properties.bootstrap.servers' = 'localhost:9092',"
        + " 'format' = 'json'"
        + ")";
tableEnv.executeSql(sourceDDL);
// 定義 Kafka 目標表
String sinkDDL = "CREATE TABLE kafka_sink ("
        + " user_id STRING,"
        + " action STRING,"
        + " action_count BIGINT,"
        + " window_start TIMESTAMP(3),"
        + " window_end TIMESTAMP(3)"
        + ") WITH ("
        + " 'connector' = 'kafka',"
        + " 'topic' = 'output_topic',"
        + " 'properties.bootstrap.servers' = 'localhost:9092',"
        + " 'format' = 'json'"
        + ")";
tableEnv.executeSql(sinkDDL);
// 使用 Table API 進行查詢
Table result = tableEnv
    .from("kafka_source")
    .window(Tumble.over(lit(10).minutes()).on($("timestamp")).as("w"))
    .groupBy($("w"), $("user_id"))
    .select(
        $("user_id"),
        $("action"),
        $("w").start().as("window_start"),
        $("w").end().as("window_end"),
        $("action").count().as("action_count")
    );
// 將查詢結果寫入目標表
result.executeInsert("kafka_sink");

Table API 常用操作

選擇(Select)

Table result = tableEnv.from("kafka_source")
                         .select($("user_id"), $("action"), $("timestamp"));

過濾(Filter)

Table filtered = tableEnv.from("kafka_source")
                            .filter($("action").isEqual("purchase"));

聚合(Aggregation)

Table aggregated = tableEnv.from("kafka_source")
                              .groupBy($("user_id"))
                              .select($("user_id"), $("action").count().as("action_count"));

連接(Join)

Table joined = tableEnv.from("kafka_source")
                          .join(tableEnv.from("another_table"))
                          .where($("kafka_source.user_id").isEqual($("another_table.user_id")))
                          .select($("kafka_source.user_id"), $("kafka_source.action"), $("another_table.info"));

窗口操作(Windowing)

Table windowed = tableEnv.from("kafka_source")
                            .window(Tumble.over(lit(10).minutes()).on($("timestamp")).as("w"))
                            .groupBy($("w"), $("user_id"))
                            .select($("user_id"), $("w").start().as("window_start"), $("w").end().as("window_end"), $("action").count().as("action_count"));

總結

Flink 的 Table API 提供了一種聲明式的、類似 SQL 的方式來進行數據流和批處理。它使用戶能夠使用高層次的查詢語言進行數據處理,而不需要關心底層的實現細節。通過與 SQL 的緊密集成,Table API 既保留了 SQL 的易用性,又提供了更強大的編程靈活性,是構建 Flink 應用的強大工具。

使用Table API調用完整的分析SQL

使用 Flink 的 Table API 可以調用和執行完整的 Flink SQL 查詢。Flink 提供了將 SQL 查詢嵌入到 Table API 中的方法,使得用戶可以在程序中編寫和執行 SQL 語句。

下面是一個完整的示例,演示如何使用 Table API 調用和執行從 Kafka 讀取數據、進行分析并將結果寫回 Kafka 的 Flink SQL 查詢。

步驟:

  1. 設置執行環境。
  2. 定義 Kafka 源表和目標表。
  3. 編寫和執行 SQL 查詢。
  4. 將結果寫入目標表。

示例代碼:

import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.*;
import org.apache.flink.table.api.bridge.java.StreamTableEnvironment;
public class FlinkSqlExample {
    public static void main(String[] args) {
        // 設置執行環境
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env);
        // 定義 Kafka 源表
        String sourceDDL = "CREATE TABLE kafka_source ("
                + " user_id STRING,"
                + " action STRING,"
                + " timestamp TIMESTAMP(3),"
                + " WATERMARK FOR timestamp AS timestamp - INTERVAL '5' SECOND"
                + ") WITH ("
                + " 'connector' = 'kafka',"
                + " 'topic' = 'input_topic',"
                + " 'properties.bootstrap.servers' = 'localhost:9092',"
                + " 'format' = 'json'"
                + ")";
        tableEnv.executeSql(sourceDDL);
        // 定義 Kafka 目標表
        String sinkDDL = "CREATE TABLE kafka_sink ("
                + " user_id STRING,"
                + " action_count BIGINT,"
                + " window_start TIMESTAMP(3),"
                + " window_end TIMESTAMP(3)"
                + ") WITH ("
                + " 'connector' = 'kafka',"
                + " 'topic' = 'output_topic',"
                + " 'properties.bootstrap.servers' = 'localhost:9092',"
                + " 'format' = 'json'"
                + ")";
        tableEnv.executeSql(sinkDDL);
        // 編寫 SQL 查詢
        String query = "INSERT INTO kafka_sink "
                + "SELECT "
                + " user_id, "
                + " COUNT(action) AS action_count, "
                + " TUMBLE_START(timestamp, INTERVAL '10' MINUTE) AS window_start, "
                + " TUMBLE_END(timestamp, INTERVAL '10' MINUTE) AS window_end "
                + "FROM kafka_source "
                + "GROUP BY "
                + " user_id, "
                + " TUMBLE(timestamp, INTERVAL '10' MINUTE)";
        // 執行 SQL 查詢
        tableEnv.executeSql(query);
    }
}

詳細說明:

設置執行環境

  • 創建 StreamExecutionEnvironment 和 StreamTableEnvironment,用于流處理和 Table API 操作。

定義 Kafka 源表

  • 使用 CREATE TABLE 語句定義源表 kafka_source,指定數據的字段和數據源的連接配置。

定義 Kafka 目標表

  • 使用 CREATE TABLE 語句定義目標表 kafka_sink,指定數據的字段和數據匯的連接配置。

編寫 SQL 查詢

  • 編寫一個 SQL 查詢,將源表的數據進行窗口聚合,計算每個用戶在10分鐘窗口內的操作次數。

執行 SQL 查詢

  • 使用 tableEnv.executeSql(query) 執行 SQL 查詢,將結果寫入目標表。

總結

通過使用 Flink 的 Table API,可以在 Java 程序中嵌入和執行完整的 Flink SQL 查詢。這種方式結合了 SQL 的聲明式編程和 Table API 的靈活性,使得開發復雜的流處理和批處理應用變得更加簡潔和高效。

Table API的應用

目前市面上很多基于 Flink SQL 的在線編輯和任務執行引擎主要是通過 Flink 的 Table API 實現的。通過 Table API,用戶可以在運行時動態地解析和執行 SQL 查詢。這種方法提供了靈活性和高效性,使得在交互式環境中執行流式和批處理查詢變得非常方便。

基于 Table API 實現的在線編輯任務執行引擎

Flink 的 Table API 是一個高級別的 API,可以輕松地將 SQL 查詢轉換為 Flink 程序,并且在執行環境中運行這些程序。這使得許多在線 SQL 編輯器和執行引擎可以動態地接受用戶輸入的 SQL 查詢,并將其轉換為 Flink 的作業進行執行。

其他方法

除了使用 Table API,還有其他幾種方法可以實現基于 Flink SQL 的在線編輯任務執行:

直接使用 SQL API

  • Flink 的 SQL API 允許直接編寫 SQL 查詢,并在執行環境中運行這些查詢。SQL API 和 Table API 是緊密集成的,很多情況下是可以互換使用的。

Flink SQL CLI

  • Flink 提供了一個命令行工具(SQL CLI),可以用于交互式地執行 SQL 查詢。這適用于需要手動輸入 SQL 并立即查看結果的場景。

REST API

  • 使用 Flink 提供的 REST API,可以將 SQL 查詢提交到 Flink 集群進行執行。通過自定義的 Web 界面或應用程序,用戶可以在線編輯和提交 SQL 查詢到 Flink 集群。
  • 自定義的 REST 服務可以解析用戶輸入的 SQL,調用 Flink 的 REST API 提交作業,并將結果返回給用戶。

Flink Dashboard

  • Flink 的 Web Dashboard 提供了一些交互式功能,可以查看和管理作業狀態。雖然不直接支持 SQL 編輯和執行,但可以集成其他工具以實現此功能。

Flink SQL Gateway

  • Flink SQL Gateway 是一個面向 SQL 的接口層,允許用戶通過 JDBC 或 REST API 提交 SQL 查詢。SQL Gateway 可以作為一個中間層,解析用戶的 SQL 查詢,并將其轉換為 Flink 作業進行執行。

示例:使用 REST API 提交 SQL 查詢

假設我們有一個自定義的 Web 應用,用戶可以在界面上輸入 SQL 查詢,并提交到 Flink 集群執行。以下是一個簡單的 REST 服務示例,展示如何通過 REST API 提交 SQL 查詢:

import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping("/flink-sql")
public class FlinkSqlController {
    @Autowired
    private RestTemplate restTemplate;
    @PostMapping("/execute")
    public ResponseEntity<String> executeSql(@RequestBody String sqlQuery) {
        String flinkUrl = "http://localhost:8081/v1/sql/execute";
        Map<String, String> request = new HashMap<>();
        request.put("statement", sqlQuery);
        ResponseEntity<String> response = restTemplate.postForEntity(flinkUrl, request, String.class);
        return ResponseEntity.ok(response.getBody());
    }
}

在這個示例中,我們創建了一個簡單的 Spring Boot REST 服務,允許用戶通過 POST 請求提交 SQL 查詢,并將其轉發到 Flink 集群進行執行。

總結

雖然大多數基于 Flink SQL 的在線編輯和任務執行引擎都是通過 Table API 實現的,但還有其他方法可以實現類似的功能,包括直接使用 SQL API、Flink SQL CLI、REST API、Flink Dashboard 和 Flink SQL Gateway 等。這些方法各有優劣,可以根據具體需求選擇合適的方案。

責任編輯:武曉燕 來源: 海燕技術棧
相關推薦

2024-06-03 08:26:35

2024-06-04 14:10:00

FlinkSQL窗口大數據

2024-06-05 09:16:54

開源工具Airflow

2013-01-21 09:31:22

大數據分析大數據實時分析云計算

2014-01-22 11:22:44

華為HANA一體機FusionCube大數據分析

2019-07-05 11:01:59

Google電子商務搜索引擎

2016-08-31 14:41:31

大數據實時分析算法分類

2016-09-18 23:33:22

實時分析網站

2016-11-09 15:23:44

2016-04-08 17:55:23

HPE大數據Haven

2018-12-18 15:21:22

海量數據Oracle

2021-06-04 07:24:14

Flink CDC數據

2021-03-10 14:04:10

大數據計算技術

2021-07-05 10:48:42

大數據實時計算

2024-09-11 14:47:00

2014-02-21 16:46:57

英特爾大數據技術實時分析

2019-05-13 16:05:35

金融大數據分析

2017-01-15 13:45:20

Docker大數據京東

2017-01-04 10:29:37

Spark運維技術
點贊
收藏

51CTO技術棧公眾號

久久综合成人| 欧美xo影院| 成人小视频免费在线观看| 97热精品视频官网| 国产一级久久久久毛片精品| 亚洲伊人精品酒店| 午夜久久久影院| 色综合视频二区偷拍在线| 国产强被迫伦姧在线观看无码| 亚洲一级影院| 中文字幕亚洲第一| 一本加勒比波多野结衣| 国产精品伦一区二区| 亚洲一区在线视频| 亚欧精品在线| 日韩一区二区三区不卡| 久久91精品国产91久久小草| 国内精品久久久久久久久| 一区二区伦理片| av成人资源网| 欧美精品1区2区3区| 久久综合色视频| a毛片在线播放| 日本一区二区视频在线| 国产欧美日韩一区| 国产日本精品视频| 麻豆成人综合网| 91高清视频在线免费观看| 任我爽在线视频| 亚洲妇女av| 精品久久久久久久久久久院品网| xxww在线观看| 日韩制服诱惑| 日韩人在线观看| 久久久久免费看黄a片app| 国产三区在线观看| 国产精品久久免费看| 欧美精品七区| 青青免费在线视频| 99久久精品国产网站| 国产经品一区二区| 一区二区视频播放| 日韩成人午夜电影| 国产999精品久久久| 中文字幕亚洲高清| 亚洲精选一区| 66m—66摸成人免费视频| 激情综合五月网| 欧美日韩亚洲一区| 精品自在线视频| 久草中文在线视频| 女人色偷偷aa久久天堂| 欧美乱妇40p| 午夜69成人做爰视频| 中国成人一区| 久久999免费视频| 久久免费小视频| 好吊日精品视频| 国内成人精品视频| 日韩成人av毛片| 亚洲一区日本| 国产精品激情自拍| 亚洲自拍偷拍另类| 精品一区在线看| 91精品久久久久久蜜桃| 精品人妻一区二区三区换脸明星| 国产精品18久久久久久久久| 国产aⅴ精品一区二区三区黄| 丰满人妻一区二区三区免费| 成人美女视频在线观看18| 国产一区二区三区高清| 色吊丝在线永久观看最新版本| 久久女同精品一区二区| 色一情一乱一伦一区二区三区 | 精品成人佐山爱一区二区| 中文字幕人妻一区| 亚洲永久精品唐人导航网址| 中文字幕亚洲欧美一区二区三区 | 第一福利永久视频精品| 欧美日韩一区二区在线免费观看| 91久久久久久白丝白浆欲热蜜臀| 欧美另类z0zxhd电影| 国产精品19p| 亚洲丝袜啪啪| 日日狠狠久久偷偷四色综合免费 | 91国产丝袜在线播放| 免费一区二区三区在线观看| 日韩免费精品| 999国产精品视频免费| 成人性生交大片免费网站| 色婷婷综合久久| 亚欧美在线观看| 2023国产精华国产精品| 亚洲精品视频在线观看视频| 91导航在线观看| 好看不卡的中文字幕| 国产99久久久欧美黑人| a视频免费在线观看| 久久新电视剧免费观看| 91九色国产ts另类人妖| 欧美成人h版| 欧美一级片在线看| 爱爱免费小视频| 91成人精品| 日韩美女视频免费看| 国产成人毛毛毛片| 国产日产精品一区| 久久在线中文字幕| 欧美成人aaa| 日韩精品在线观看一区| 久久久久久噜噜噜久久久精品| 538精品在线观看| 久久五月激情| 成人午夜影院在线观看| 91在线看黄| 色综合久久久久综合99| 欧美xxxx日本和非洲| 欧美韩日一区| 日韩免费中文字幕| 天堂中文字幕在线| 亚洲国产精品一区二区久久| 特级西西444www| 精品国内自产拍在线观看视频 | 懂色av懂色av粉嫩av| 美女精品一区| 久久综合九色99| 免费毛片在线看片免费丝瓜视频 | 19禁羞羞电影院在线观看| 在线播放欧美女士性生活| 免费在线观看a视频| 亚洲在线国产日韩欧美| 国产精品二区三区| caoporn免费在线视频| 精品污污网站免费看| 国产人妻一区二区| 久久精品一区二区三区中文字幕| 精品在线视频一区二区| 国产黄大片在线观看| 精品久久久久久久久久久久久久久| 熟女av一区二区| 九色综合国产一区二区三区| 亚洲一区二区三区乱码| 久久精品xxxxx| 中文字幕亚洲色图| 888奇米影视| 亚洲人一二三区| 免费黄频在线观看| 欧美成人高清| 成人区精品一区二区| 日韩三级免费| 亚洲国产精品va在线看黑人 | 妖精视频在线观看免费| 美女一区二区久久| 在线一区亚洲| 久久久久久亚洲精品美女| 欧美成人第一页| 午夜免费福利视频| 亚洲不卡在线观看| 最新在线黄色网址| 久久国产日本精品| 五月天亚洲综合| 国产精品一区二区精品| 欧美巨大黑人极品精男| 午夜精品一二三区| 欧美视频专区一二在线观看| 亚洲女优在线观看| 狠狠狠色丁香婷婷综合激情 | 日韩在线免费| 色av中文字幕一区| 国产露脸无套对白在线播放| 亚洲主播在线播放| 法国伦理少妇愉情| 久久99精品一区二区三区三区| 大陆极品少妇内射aaaaaa| 国产精品白丝一区二区三区| 欧洲亚洲免费视频| 欧美成人三区| 亚洲大胆人体av| 日本三级一区二区三区| 亚洲久草在线视频| 午夜av免费看| 精品一区二区三区免费| 性欧美大战久久久久久久| 国产伦精品一区二区三区千人斩| 91精品视频免费| 麻豆蜜桃在线观看| 俺去啦;欧美日韩| 人妻精品一区二区三区| 欧美日韩免费一区二区三区视频| 精品无码人妻一区二区三区| 国产日韩欧美高清在线| 农村末发育av片一区二区 | 欧美日韩国产在线看| 国产福利在线导航| 99免费精品视频| 一本色道久久亚洲综合精品蜜桃| 黄色精品一区| 亚洲国产日韩欧美| 国产精品17p| 国产自摸综合网| 大胆人体一区二区| 欧美日韩成人网| 2021av在线| 国产视频精品va久久久久久| 国产熟女精品视频| 欧美日韩中文一区| 特级做a爱片免费69| 一区二区在线电影| 天堂а√在线中文在线鲁大师| 久久午夜老司机| www.黄色网| 韩国理伦片一区二区三区在线播放| 女人和拘做爰正片视频| 亚洲夜间福利| 精品无码av无码免费专区| 久久中文视频| 日本最新一区二区三区视频观看| 国产亚洲精品美女久久| 亚洲伊人久久大香线蕉av| 91国内外精品自在线播放| 57pao成人国产永久免费| 黑人精品视频| 欧美乱妇40p| 二区三区在线观看| 中文日韩在线观看| 久久精品a一级国产免视看成人 | 3d成人动漫在线| 亚洲性69xxxbbb| 免费成人av电影| 亚洲精品自拍偷拍| 天天综合在线视频| 亚洲精品国产欧美| 四虎在线视频免费观看| 精品国产乱码久久久久久浪潮| 精品人妻午夜一区二区三区四区| 777久久久精品| 97人妻精品一区二区三区| 欧美视频在线播放| 中文字幕有码视频| 欧洲另类一二三四区| 天堂网一区二区| 在线观看视频一区二区欧美日韩| 亚洲精品久久久久久久蜜桃| 日本道精品一区二区三区 | 欧美一区二区三区的| 香蕉视频免费版| 国产偷人爽久久久久久老妇app| 亚洲无人区一区| 欧美成人三级视频| 亚洲猫色日本管| 国产这里有精品| 一区二区三区四区av| 毛片a片免费观看| 亚洲午夜成aⅴ人片| 精品91久久久| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲国产成人高清精品| 国产农村妇女精品一区| 中文字幕精品综合| 波多野结衣喷潮| 亚洲免费色视频| 国产精选第一页| 欧美性少妇18aaaa视频| 日韩不卡高清视频| 91精品在线免费观看| 亚洲第一第二区| 日韩精品视频在线免费观看| 黄色在线视频观看网站| 日韩一区二区久久久| 制服丝袜在线播放| 91成人天堂久久成人| 91看片一区| 91日本在线观看| 巨人精品**| 亚洲春色在线| 国产精品v日韩精品v欧美精品网站| 免费无码毛片一区二三区| 日韩二区三区在线观看| 欧美xxxxxbbbbb| 91日韩精品一区| 在线视频这里只有精品| 亚洲国产精品久久艾草纯爱| 五月婷婷丁香在线| 日韩免费看网站| 蜜桃视频在线入口www| 欧美成人精品在线观看| jizz内谢中国亚洲jizz| 成人欧美一区二区三区黑人| 蜜桃一区av| 日本黄色播放器| 一区二区日本视频| 一道本在线免费视频| 99免费精品在线| 麻豆明星ai换脸视频| 日韩欧美福利视频| www.日韩高清| 色哟哟入口国产精品| 超碰资源在线| 91香蕉电影院| 日本女优一区| 国产成人无码精品久久久性色| 国产在线一区二区综合免费视频| 日韩精品视频一区二区| **欧美大码日韩| 丰满少妇xoxoxo视频| 亚洲精品在线三区| 久做在线视频免费观看| 国产成人高潮免费观看精品| 超碰在线成人| 午夜在线视频免费观看| 视频在线观看一区| 亚洲黄色小说在线观看| 中文字幕一区二区三中文字幕| 无码任你躁久久久久久久| 精品国产一区二区三区忘忧草| 麻豆网站在线| 国产精品旅馆在线| 亚洲女娇小黑人粗硬| 亚洲熟妇无码一区二区三区| 国产高清久久久| 91精品少妇一区二区三区蜜桃臀| 色婷婷综合久久久久中文一区二区| 欧美熟妇交换久久久久久分类 | 成人精品视频久久久久| 精品国产123区| 国产偷人视频免费| 91视频免费播放| 亚洲一区 视频| 欧美成人精精品一区二区频| av中文字幕在线观看| 成人免费大片黄在线播放| 97国产精品| 777一区二区| 国产精品美女久久久久久久久久久 | 日本黄色三级网站| 亚洲欧美日韩久久精品| 国产精品无码久久av| 久久精品国产精品| 99久久99九九99九九九| 一区二区三区一级片| 极品少妇xxxx偷拍精品少妇| 91导航在线观看| 欧美精品123区| 国产1区在线| 成人在线观看91| 尹人成人综合网| 国产精品伦子伦| 一本色道亚洲精品aⅴ| 欧美午夜黄色| 国产精品白嫩美女在线观看| 欧美精品羞羞答答| av中文字幕网址| 自拍偷在线精品自拍偷无码专区 | 精品亚洲aⅴ在线观看| 中老年在线免费视频| 欧美一区二区在线| 秋霞av亚洲一区二区三| 成人欧美一区二区三区黑人一| 在线播放日韩导航| 久久av色综合| 欧美日韩系列| 久久99日本精品| 精品一区二区三区四| 日韩av在线一区| 国产综合色在线观看| 精品国产一区二区三区在线| 成人91在线观看| 国产美女www| 欧美成人精品在线视频| 久久超级碰碰| 黄色成人免费看| 一区二区在线免费观看| 亚洲日本国产精品| 国产精品一区二区三区成人| 中国成人一区| 午夜理伦三级做爰电影| 欧美疯狂性受xxxxx喷水图片| 青春草在线免费视频| 欧美精品123| 国产伦精一区二区三区| 国产午夜免费福利| zzijzzij亚洲日本成熟少妇| 国语一区二区三区| 在线免费观看视频黄| 亚洲自拍偷拍欧美| 成人在线免费观看| 99久久国产免费免费| 三级成人在线视频| 欧美丰满艳妇bbwbbw| 亚洲天堂av综合网| 91精品啪在线观看国产爱臀| www.日本xxxx| 亚洲1区2区3区视频| 日韩三级影院| 久久日韩精品| 国产高清在线精品| 中文字幕日本视频| 97视频免费在线观看| 五月天久久久| 成年人免费观看视频网站|