日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

八、Doris外部表及数据导入

發(fā)布時間:2023/12/13 综合教程 45 生活家
生活随笔 收集整理的這篇文章主要介紹了 八、Doris外部表及数据导入 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

DorisDB提供了多種導(dǎo)入方式,用戶可以根據(jù)數(shù)據(jù)量大小、導(dǎo)入頻率等要求選擇最適合自己業(yè)務(wù)需求的導(dǎo)入方式。

數(shù)據(jù)導(dǎo)入:

1、離線數(shù)據(jù)導(dǎo)入:如果數(shù)據(jù)源是Hive/HDFS,推薦采用Broker Load導(dǎo)入, 如果數(shù)據(jù)表很多導(dǎo)入比較麻煩可以考慮使用Hive外表直連查詢,性能會比Broker load導(dǎo)入效果差,但是可以避免數(shù)據(jù)搬遷,如果單表的數(shù)據(jù)量特別大,或者需要做全局?jǐn)?shù)據(jù)字典來精確去重可以考慮Spark Load導(dǎo)入。
2、實(shí)時數(shù)據(jù)導(dǎo)入:日志數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù)庫的binlog同步到Kafka以后,優(yōu)先推薦通過Routine load 導(dǎo)入DorisDB,如果導(dǎo)入過程中有復(fù)雜的多表關(guān)聯(lián)和ETL預(yù)處理可以使用Flink處理以后用stream load寫入DorisDB
3、程序?qū)懭隓orisDB:推薦使用Stream Load
4、Mysql數(shù)據(jù)導(dǎo)入:推薦使用Mysql外表insert into new_table select * from external_table 的方式導(dǎo)入
5、DorisDB內(nèi)部導(dǎo)入:可以在DorisDB內(nèi)部使用 insert into tablename select 的方式導(dǎo)入,可以跟外部調(diào)度器配合實(shí)現(xiàn)簡單的ETL處理
6、其他數(shù)據(jù)源導(dǎo)入:推薦使用 DataX 導(dǎo)入

外部表:

DorisDB支持以外部表的形式,接入其他數(shù)據(jù)源。
外部表指的是保存在其他數(shù)據(jù)源中的數(shù)據(jù)表
目前DorisDB已支持的第三方數(shù)據(jù)源包括 MySQL、HDFS、ElasticSearch,Hive。

重點(diǎn)目錄:

1.1Broker Load
1.2Spark Load
1.3Stream Load
1.4Routine Load
2.1MySQL外部表
2.2ElasticSearch外部表

1.1 Broker Load


在Broker Load模式下,通過部署的 Broker 程序,DorisDB可讀取對應(yīng)數(shù)據(jù)源(如HDFS, S3、阿里云 OSS、騰訊 COS)上的數(shù)據(jù),利用自身的計算資源對數(shù)據(jù)進(jìn)行預(yù)處理和導(dǎo)入。這是一種異步的導(dǎo)入方式,用戶需要通過MySQL協(xié)議創(chuàng)建導(dǎo)入,并通過查看導(dǎo)入命令檢查導(dǎo)入結(jié)果。

1、名詞解釋

Broker:Broker 為一個獨(dú)立的無狀態(tài)進(jìn)程,封裝了文件系統(tǒng)接口,為 DorisDB 提供讀取遠(yuǎn)端存儲系統(tǒng)中文件的能力
Plan:導(dǎo)入執(zhí)行計劃,BE會執(zhí)行導(dǎo)入執(zhí)行計劃將數(shù)據(jù)導(dǎo)入到DorisDB系統(tǒng)中。

2、語法:

LOAD LABEL db_name.label_name 
  (data_desc, ...)
  WITH BROKER broker_name broker_properties
  [PROPERTIES (key1=value1, ... )]

  data_desc:
      DATA INFILE ('file_path', ...)
      [NEGATIVE]
      INTO TABLE tbl_name
      [PARTITION (p1, p2)]
      [COLUMNS TERMINATED BY column_separator ]
      [FORMAT AS file_type]
      [(col1, ...)]
      [SET (k1=f1(xx), k2=f2(xx))]
      [WHERE predicate]

  broker_properties: 
      (key2=value2, ...)

說明:

1)、Label:導(dǎo)入任務(wù)的標(biāo)識。每個導(dǎo)入任務(wù),都有一個數(shù)據(jù)庫內(nèi)部唯一的Label。Label是用戶在導(dǎo)入命令中自定義的名稱。

通過這個Label,用戶可以查看對應(yīng)導(dǎo)入任務(wù)的執(zhí)行情況,并且Label可以用來防止用戶導(dǎo)入相同的數(shù)據(jù)。
當(dāng)導(dǎo)入任務(wù)狀態(tài)為FINISHED時,對應(yīng)的Label就不能再次使用了。
當(dāng) Label 對應(yīng)的導(dǎo)入任務(wù)狀態(tài)為CANCELLED時,可以再次使用該Label提交導(dǎo)入作業(yè)。

2)、data_desc:每組 data_desc表述了本次導(dǎo)入涉及到的數(shù)據(jù)源地址,ETL 函數(shù),目標(biāo)表及分區(qū)等信息。

示例 :參見:https://www.kancloud.cn/dorisdb/dorisdb/2146000

1.2Spark Load


Spark Load 通過外部的 Spark 資源實(shí)現(xiàn)對導(dǎo)入數(shù)據(jù)的預(yù)處理提高 DorisDB 大數(shù)據(jù)量的導(dǎo)入性能并且節(jié)省 Doris 集群的計算資源。主要用于初次遷移、大數(shù)據(jù)量導(dǎo)入 DorisDB 的場景(數(shù)據(jù)量可到TB級別)

1、基本原理

Spark Load 任務(wù)的執(zhí)行主要分為以下幾個階段:

1、用戶向 FE 提交 Spark Load 任務(wù);
2、FE 調(diào)度提交 ETL 任務(wù)到 Spark 集群執(zhí)行。
3、Spark 集群執(zhí)行 ETL 完成對導(dǎo)入數(shù)據(jù)的預(yù)處理。包括全局字典構(gòu)建(BITMAP類型)、分區(qū)、排序、聚合等。
4、ETL 任務(wù)完成后,F(xiàn)E 獲取預(yù)處理過的每個分片的數(shù)據(jù)路徑,并調(diào)度相關(guān)的 BE 執(zhí)行 Push 任務(wù)。
5、BE 通過 Broker 讀取數(shù)據(jù),轉(zhuǎn)化為 DorisDB 存儲格式。
6、FE 調(diào)度生效版本,完成導(dǎo)入任務(wù)。

2、預(yù)處理流程:

1、從數(shù)據(jù)源讀取數(shù)據(jù),上游數(shù)據(jù)源可以是HDFS文件,也可以是Hive表。
2、對讀取到的數(shù)據(jù)完成字段映射、表達(dá)式計算,并根據(jù)分區(qū)信息生成分桶字段bucket_id。
3、根據(jù)DorisDB表的Rollup元數(shù)據(jù)生成RollupTree。
4、遍歷RollupTree,進(jìn)行分層的聚合操作,下一個層級的Rollup可以由上一個層的Rollup計算得來。
5、每次完成聚合計算后,會對數(shù)據(jù)根據(jù)bucket_id進(jìn)行分桶然后寫入HDFS中。
6、后續(xù)Broker會拉取HDFS中的文件然后導(dǎo)入DorisDB BE節(jié)點(diǎn)中。

3、基本操作參見:https://www.kancloud.cn/dorisdb/dorisdb/2146001

1.3Stream Load


Stream Load 是一種同步的導(dǎo)入方式,用戶通過發(fā)送 HTTP 請求將本地文件或數(shù)據(jù)流導(dǎo)入到 DorisDB 中。Stream Load 同步執(zhí)行導(dǎo)入并返回導(dǎo)入結(jié)果。用戶可直接通過請求的返回值判斷導(dǎo)入是否成功。

1、主要流程:

說明:

Stream Load 中,用戶通過HTTP協(xié)議提交導(dǎo)入命令。
如果提交到FE節(jié)點(diǎn),則FE節(jié)點(diǎn)會通過HTTP redirect指令將請求轉(zhuǎn)發(fā)給某一個BE節(jié)點(diǎn),用戶也可以直接提交導(dǎo)入命令給某一指定BE節(jié)點(diǎn)。
BE節(jié)點(diǎn)作為Coordinator節(jié)點(diǎn),將數(shù)據(jù)按表schema劃分并分發(fā)數(shù)據(jù)到相關(guān)的BE節(jié)點(diǎn)。
導(dǎo)入的最終結(jié)果由 Coordinator節(jié)點(diǎn)返回給用戶。

2、基本操作參見:https://www.kancloud.cn/dorisdb/dorisdb/2146002

1.4Routine Load


Routine Load 是一種例行導(dǎo)入方式,DorisDB通過這種方式支持從Kafka持續(xù)不斷的導(dǎo)入數(shù)據(jù),并且支持通過SQL控制導(dǎo)入任務(wù)的暫停、重啟、停止

1、基本原理

導(dǎo)入流程說明:

1、用戶通過支持MySQL協(xié)議的客戶端向 FE 提交一個Kafka導(dǎo)入任務(wù)。
2、FE將一個導(dǎo)入任務(wù)拆分成若干個Task,每個Task負(fù)責(zé)導(dǎo)入指定的一部分?jǐn)?shù)據(jù)。
3、每個Task被分配到指定的 BE 上執(zhí)行。在 BE 上,一個 Task 被視為一個普通的導(dǎo)入任務(wù),通過 Stream Load 的導(dǎo)入機(jī)制進(jìn)行導(dǎo)入。
4、BE導(dǎo)入完成后,向 FE 匯報。
5、FE 根據(jù)匯報結(jié)果,繼續(xù)生成后續(xù)新的 Task,或者對失敗的 Task 進(jìn)行重試。
6、FE 會不斷的產(chǎn)生新的 Task,來完成數(shù)據(jù)不間斷的導(dǎo)入。

2、基本操作參見:https://www.kancloud.cn/dorisdb/dorisdb/2146003

2.1MySQL外部表


星型模型中,數(shù)據(jù)一般劃分為維度表和事實(shí)表。維度表數(shù)據(jù)量少,但會涉及UPDATE操作。目前DorisDB中還不直接支持UPDATE操作(可以通過Unique數(shù)據(jù)模型實(shí)現(xiàn)),在一些場景下,可以把維度表存儲在MySQL中,查詢時直接讀取維度表

在使用MySQL的數(shù)據(jù)之前,需在DorisDB創(chuàng)建外部表,與之相映射。DorisDB中創(chuàng)建MySQL外部表時需要指定MySQL的相關(guān)連接信息,如下圖。

2.2ElasticSearch外部表


DorisDB與ElasticSearch都是目前流行的分析系統(tǒng),DorisDB強(qiáng)于大規(guī)模分布式計算,ElasticSearch擅長全文檢索。DorisDB支持ElasticSearch訪問的目的,就在于將這兩種能力結(jié)合,提供更完善的一個OLAP解決方案。

1、建表示例

2、謂詞下推

DorisDB支持對ElasticSearch表進(jìn)行謂詞下推,把過濾條件推給ElasticSearch進(jìn)行執(zhí)行,讓執(zhí)行盡量靠近存儲,提高查詢性能。目前支持哪個下推的算子如下表。

3、詳細(xì)說明參見:https://www.kancloud.cn/dorisdb/dorisdb/2146013

參考資料:


https://www.kancloud.cn/dorisdb/dorisdb/2145999

總結(jié)

以上是生活随笔為你收集整理的八、Doris外部表及数据导入的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。