国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Flink實戰(zhàn)】Flink hint更靈活、更細粒度的設(shè)置Flink sql行為與簡化hive連接器參數(shù)設(shè)置

這篇具有很好參考價值的文章主要介紹了【Flink實戰(zhàn)】Flink hint更靈活、更細粒度的設(shè)置Flink sql行為與簡化hive連接器參數(shù)設(shè)置。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

SQL 提示(SQL Hints)是和 SQL 語句一起使用來改變執(zhí)行計劃的。本章介紹如何使用 SQL 提示來實現(xiàn)各種干預。

SQL 提示一般可以用于以下:

  • 增強 planner:沒有完美的 planner, SQL 提示讓用戶更好地控制執(zhí)行;
  • 增加元數(shù)據(jù)(或者統(tǒng)計信息):如"已掃描的表索引"和"一些混洗鍵(shuffle keys)的傾斜信息"的一些統(tǒng)計數(shù)據(jù)對于查詢來說是動態(tài)的,用提示來配置它們會非常方便,因為我們從 planner
    獲得的計劃元數(shù)據(jù)通常不那么準確;
  • 算子(Operator)資源約束:在許多情況下,我們會為執(zhí)行算子提供默認的資源配置,即最小并行度或托管內(nèi)存(UDF 資源消耗)或特殊資源需求(GPU 或 SSD 磁盤)等,可以使用 SQL 提示非常靈活地為每個查詢(非作業(yè))配置資源。

?文章來源地址http://www.zghlxwxcb.cn/news/detail-858073.html

一. create table hints

動態(tài)表選項允許動態(tài)地指定或覆蓋表選項,不同于用 SQL DDL 或 連接 API 定義的靜態(tài)表選項,這些選項可以在每個查詢的每個表范圍內(nèi)靈活地指定。

因此,它非常適合用于交互式終端中的特定查詢,例如,在 SQL-CLI 中,你可以通過添加動態(tài)選項/*+ OPTIONS('csv.ignore-parse-errors'='true') */來指定忽略 CSV 源的解析錯誤。

?

1. 語法

為了不破壞 SQL 兼容性,我們使用 Oracle 風格的 SQL hints 語法:

table_path /*+ OPTIONS(key=val [, key=val]*) */

key: string字符
val: string字符

?

2. 示例


CREATE TABLE kafka_table1 (id BIGINT, name STRING, age INT) WITH (...);
CREATE TABLE kafka_table2 (id BIGINT, name STRING, age INT) WITH (...);

-- `覆蓋`查詢語句中源表的選項
select id, name from kafka_table1 /*+ OPTIONS('scan.startup.mode'='earliest-offset') */;

-- 覆蓋 join 中源表的選項
select * from
    kafka_table1 /*+ OPTIONS('scan.startup.mode'='earliest-offset') */ t1
    join
    kafka_table2 /*+ OPTIONS('scan.startup.mode'='earliest-offset') */ t2
    on t1.id = t2.id;

-- 覆蓋插入語句中結(jié)果表的選項
insert into kafka_table1 /*+ OPTIONS('sink.partitioner'='round-robin') */ select * from kafka_table2;

?

3. 注意

create table hints 傳遞的連接器中catalog的相關(guān)參數(shù),即create table with下參數(shù),具體到源代碼是:context.getCatalogTable().getOptions() 。

?

如果傳參無效且在日志中看到參數(shù)已經(jīng)設(shè)置成功,那

可能將context.getConfiguration()中的參數(shù)傳遞到with參數(shù)下,比如:
hive連接器下:table.exec.hive.sink.statistic-auto-gather.enable 參數(shù)由DefaultDynamicTableContext的configuration來接收。此參數(shù)為flink sql的全局參數(shù),此時可以通過set table.exec.hive.sink.statistic-auto-gather.enable=false 語法來設(shè)定參數(shù)。

?

二. 實戰(zhàn):簡化hive連接器參數(shù)設(shè)置

對于hive連接器,F(xiàn)link實現(xiàn)了通過catalog的方式來管理hive表,在使用hive表時需要使用hive相關(guān)語法,此時需要聲明,hive dialect,如下:


CREATE CATALOG myhive WITH (
    'type' = 'hive',
    'default-database' = 'aaa',
    'hive-conf-dir' = '/usr/bin/hadoop/software/hive/conf'
);

SET table.sql-dialect=hive;

-- 因為需要使用hive連接器中的寫特性,所以需要create table ,此時sql語法為hive語法
CREATE TABLE hive_table (
  user_id STRING,
  order_amount DOUBLE
) PARTITIONED BY (dt STRING, hr STRING) STORED AS parquet TBLPROPERTIES (
  'partition.time-extractor.timestamp-pattern'='$dt $hr:00:00',
  'sink.partition-commit.trigger'='partition-time',
  'sink.partition-commit.delay'='1 h',
  'sink.partition-commit.policy.kind'='metastore,success-file'
);

-- 對于某些框架例如chunjun,此處不能很好的適配:
--
SET table.sql-dialect=default;
CREATE TABLE kafka_table (
  user_id STRING,
  order_amount DOUBLE,
  log_ts TIMESTAMP(3),
  WATERMARK FOR log_ts AS log_ts - INTERVAL '5' SECOND -- 在 TIMESTAMP 列聲明 watermark。
) WITH (...);

-- streaming sql, insert into hive table
INSERT INTO TABLE myhive.aaa.hive_table 
SELECT user_id, order_amount, DATE_FORMAT(log_ts, 'yyyy-MM-dd'), DATE_FORMAT(log_ts, 'HH')
FROM kafka_table;

如下可以把寫hive的一些行為通過sql hint方式,放到Flink sql語句中,如下整個Flink sql 會清爽很多。

CREATE CATALOG myhive WITH (
    'type' = 'hive',
    'default-database' = 'database_name',
    'hive-conf-dir' = '/usr/bin/hadoop/software/hive/conf'
);


CREATE TABLE source_kafka (

    `pv` string,
    `uv` string,
    `p_day_id` string
) WITH (
      'connector' = 'kafka-x'
      ,'topic' = 'hive_kafka'
      ,'properties.bootstrap.servers' = 'xxx:9092'
      ,'properties.group.id' = 'luna_g'
      ,'scan.startup.mode' = 'earliest-offset'
      ,'json.timestamp-format.standard' = 'SQL'
      ,'json.ignore-parse-errors' = 'true'
      ,'format' = 'json'
      ,'scan.parallelism' = '1'
      );

insert into 
 myhive.database_name.table_name /*+ OPTIONS('partition.time-extractor.timestamp-pattern'='$p_day_id:00:00','sink.partition-commit.policy.kind'='metastore,success-file','sink.partition-commit.success-file.name'='_SUCCESS_gao111') */
    select *  from source_kafka; 

?

三. select hints(ing)

查詢提示(Query Hints)用于為優(yōu)化器修改執(zhí)行計劃提供建議,該修改只能在當前查詢提示所在的查詢塊中生效(Query block, 什么是查詢塊)。 目前,F(xiàn)link 查詢提示只支持聯(lián)接提示(Join Hints)。

具體見:官網(wǎng)

https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/dev/table/sql/queries/hints/#%E6%9F%A5%E8%AF%A2%E6%8F%90%E7%A4%BA

?

到了這里,關(guān)于【Flink實戰(zhàn)】Flink hint更靈活、更細粒度的設(shè)置Flink sql行為與簡化hive連接器參數(shù)設(shè)置的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【flink-sql實戰(zhàn)】flink 主鍵聲明與upsert功能實戰(zhàn)

    主鍵用作 Flink 優(yōu)化的一種提示信息。主鍵限制表明一張表或視圖的 某個(些)列 是唯一的 并且不包含 Null 值 。 主鍵聲明的列都是非 nullable 的。因此主鍵可以被用作表行級別的唯一標識。 主鍵可以和列的定義一起聲明,也可以獨立聲明為表的限制屬性,不管是哪種方式,

    2024年02月03日
    瀏覽(26)
  • 【SQL開發(fā)實戰(zhàn)技巧】系列(八):聊聊如何插入數(shù)據(jù)時比約束更靈活的限制數(shù)據(jù)插入以及怎么一個insert語句同時插入多張表

    【SQL開發(fā)實戰(zhàn)技巧】系列(一):關(guān)于SQL不得不說的那些事 【SQL開發(fā)實戰(zhàn)技巧】系列(二):簡單單表查詢 【SQL開發(fā)實戰(zhàn)技巧】系列(三):SQL排序的那些事 【SQL開發(fā)實戰(zhàn)技巧】系列(四):從執(zhí)行計劃討論UNION ALL與空字符串UNION與OR的使用注意事項 【SQL開發(fā)實戰(zhàn)技巧】系列

    2024年01月15日
    瀏覽(37)
  • (增加細粒度資源管理)深入理解flink的task slot相關(guān)概念

    (增加細粒度資源管理)深入理解flink的task slot相關(guān)概念

    之前對flink的task slot的理解太淺了,重新捋一下相關(guān)知識點 我們知道,flink中每個TaskManager都是一個?JVM?進程,可以在單獨的線程中執(zhí)行一個或多個?subtask(線程)。 但是TaskManager?的計算資源是有限的,并不是所有任務(wù)都可以放在同一個?TaskManager?上并行執(zhí)行。并行的任務(wù)越多

    2024年03月11日
    瀏覽(30)
  • 達夢sql執(zhí)行計劃、HINT、索引簡單應用

    達夢sql執(zhí)行計劃、HINT、索引簡單應用

    目錄 收集統(tǒng)計信息. 3 1. 通過DBMS_STATS包中的方法. 3 2、刪除指定表的統(tǒng)計信息. 3 執(zhí)行計劃. 3 常用執(zhí)行計劃操作符. 4 統(tǒng)計指定sql 執(zhí)行號的所有操作符的執(zhí)行時間 . 5 HINT 5 并行操作:. 6 查詢計劃重用、結(jié)果集重用. 7 示例. 8 1、收集統(tǒng)計信息:. 8 3、對sql搜集統(tǒng)計信息. 9 2、添加

    2024年02月15日
    瀏覽(21)
  • 細粒度圖像分類模型(含實戰(zhàn)代碼)

    細粒度圖像分類模型(含實戰(zhàn)代碼)

    來源:投稿 作者:lsc? 編輯:學姐 1.1細粒度圖片分類特點 可判別區(qū)域往往只是在圖像中很小的一塊區(qū)域內(nèi)。 1.2細粒度圖像分類數(shù)據(jù)集 1.3細粒度圖像分類競賽 1.4細粒度圖像分類模型分類: (1)強監(jiān)督模型: 需要類別以外的標簽進行監(jiān)督 (2)弱監(jiān)督模型: 不需要類別以外的標簽 P

    2024年02月07日
    瀏覽(18)
  • 大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink SQL編程實戰(zhàn) (熱門商品TOP N)

    大數(shù)據(jù)-玩轉(zhuǎn)數(shù)據(jù)-Flink SQL編程實戰(zhàn) (熱門商品TOP N)

    每隔30min 統(tǒng)計最近 1hour的熱門商品 top3, 并把統(tǒng)計的結(jié)果寫入到mysql中。 1.統(tǒng)計每個商品的點擊量, 開窗 2.分組窗口分組 3.over窗口 3.1、創(chuàng)建數(shù)據(jù)源示例 input/UserBehavior.csv 3.2、創(chuàng)建目標表 3.3、導入JDBC Connector依賴 3.4、代碼實現(xiàn) 執(zhí)行結(jié)果: Flink 使用 OVER 窗口條件和過濾條件相結(jié)合

    2024年02月07日
    瀏覽(19)
  • Flink Table/Sql自定義Kudu Sink實戰(zhàn)(其它Sink可參考)

    Flink Table/Sql自定義Kudu Sink實戰(zhàn)(其它Sink可參考)

    使用第三方的org.apache.bahir ? flink-connector-kudu,batch模式寫入數(shù)據(jù)到Kudu會有FlushMode相關(guān)問題 具體可以參考我的這篇博客通過Flink SQL操作創(chuàng)建Kudu表,并讀寫Kudu表數(shù)據(jù) Flink的Dynamic table能夠統(tǒng)一處理batch和streaming 實現(xiàn)自定義Source或Sink有兩種方式: 通過對已有的connector進行拓展。比

    2024年02月14日
    瀏覽(18)
  • flink sql 實戰(zhàn)實例 及延伸問題:聚合/數(shù)據(jù)傾斜/DAU/Hive流批一體 等

    flink sql 實戰(zhàn)實例 及延伸問題:聚合/數(shù)據(jù)傾斜/DAU/Hive流批一體 等

    ? 需求:上游是一個 kafka 數(shù)據(jù)源,數(shù)據(jù)內(nèi)容是用戶 QQ 等級變化明細數(shù)據(jù)(time,uid,level)。需要你求出當前每個等級的用戶數(shù)。 ? 需求:數(shù)據(jù)源:用戶心跳日志(uid,time,type)。計算分 Android,iOS 的 DAU,最晚一分鐘輸出一次當日零點累計到當前的結(jié)果。 經(jīng)過測試 在fl

    2024年02月22日
    瀏覽(34)
  • 【設(shè)計模式與范式:行為型】62 | 職責鏈模式(上):如何實現(xiàn)可靈活擴展算法的敏感信息過濾框架?

    前幾節(jié)課中,我們學習了模板模式、策略模式,今天,我們來學習職責鏈模式。這三種模式具有相同的作用:復用和擴展,在實際的項目開發(fā)中比較常用,特別是框架開發(fā)中,我們可以利用它們來提供框架的擴展點,能夠讓框架的使用者在不修改框架源碼的情況下,基于擴展

    2024年02月10日
    瀏覽(20)
  • 【Oracle】設(shè)置FGA(Fine-Grained Audit)細粒度審計

    【聲明】文章僅供學習交流,觀點代表個人,與任何公司無關(guān)。 編輯|SQL和數(shù)據(jù)庫技術(shù)(ID:SQLplusDB) 收集Oracle數(shù)據(jù)庫內(nèi)存相關(guān)的信息 【Oracle】ORA-32017和ORA-00384錯誤處理 FGA(Fine-Grained Audit)細粒度審計是Oracle提供的一種數(shù)據(jù)庫審計方法,用于創(chuàng)建定制的審計設(shè)置。 可以通過調(diào)用Or

    2024年01月24日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包