天天看點

Doris hdfs資料導入doris動态分區表Doris hdfs資料導入doris動态分區表

@羲凡——隻為了更好的活着

Doris hdfs資料導入doris動态分區表

本文重點

1.動态分區表建立

2.讀取路徑作為分區參數

3.預聚合增加count列——set (cnt = 1)

4.broker load 的 hdfs HA 配置

前期準備

1.安裝好doris——Doris 編譯安裝(完整版)
2.doris基本知識掃盲
Doris的資料模型主要分為3類:Aggregate、Duplicate、Unique;
Doris支援單分區和複合分區兩種建表方式;
單分區指的是隻指定分桶;
複合分區指的是先指定分區再指定分桶;
           

假設需求:将hive的分區表導入doris的動态分區表中

1、Doris建表

doris的樣例做的非常好,進入fe後,建表

help create table

CREATE TABLE test_db.doris_table_1
(
dt DATE,
type varchar(20),
id varchar(100),
campaignid varchar(10),
spotid varchar(10),
ts bigint min,
cnt bigint sum
)
ENGINE=olap
AGGREGATE KEY(dt, type, id, campaignid, spotid)
PARTITION BY RANGE (dt)
(
PARTITION p1 VALUES LESS THAN ("2020-09-01"),
PARTITION p2 VALUES LESS THAN ("2020-12-01"),
PARTITION p3 VALUES LESS THAN ("2021-03-01"),
PARTITION p4 VALUES LESS THAN ("2021-06-01")
)
DISTRIBUTED BY HASH(id) BUCKETS 10
PROPERTIES (
"dynamic_partition.enable" = "true",
"dynamic_partition.time_unit" = "DAY",
"dynamic_partition.end" = "3",
"dynamic_partition.prefix" = "p",
"dynamic_partition.buckets" = "10"
 );
           
重要參數解釋:
ENGINE:預設是olap,也可以是 mysql、broker、es等,但是這些事建立外表使用,推薦olap;
AGGREGATE KEY:表會按照這後面的列進行聚合
PARTITION BY:實際按什麼字段分區(如果不做複合分區就不用添加)
DISTRIBUTED BY:按什麼字段分桶
dynamic_partition.enable:預設為false,true表示開啟動态分區
dynamic_partition.time_unit:按什麼字時間進行分區,可選擇為HOUR,DAY,WEEK,MONTH
dynamic_partition.end:用于指定提前建立的分區數量,值必須大于0
dynamic_partition.prefix:用于指定自動建立的分區名字首,但是本文已經制定分區值了,就用不上這個參數
dynamic_partition.buckets:用于指定自動建立的分區分桶數量
           

2、Doris——broker load

doris的樣例做的非常好,進入fe後,導入

help broker load

LOAD LABEL doris_table_1_001
(
DATA INFILE("hdfs://ns/user/test_db/hive_table_1/dt=*/*")
INTO TABLE `doris_table_1`
COLUMNS TERMINATED BY "|"
(type,id,idtype,campaignid,spotid,referrer,ts,pcos,browser,ip)
COLUMNS FROM PATH AS (dt)
set (cnt = 1)
)
WITH BROKER broker_name (
    "username"="hdfs_user",
    "password"="hdfs_password", 
    "dfs.nameservices" = "ns",
    "dfs.ha.namenodes.ns" = "namenode30, namenode55",
    "dfs.namenode.rpc-address.ns.namenode30" = "yc-nsg-h2:8020",
    "dfs.namenode.rpc-address.ns.namenode55" = "yc-nsg-h3:8020",
    "dfs.client.failover.proxy.provider" = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider")
PROPERTIES (
    "timeout" = "3600",
    "max_filter_ratio" = "0.1",
    "timezone" = "Asia/Shanghai");
           

重要參數解釋

(type,id,...,ip):對應hive列的順序,名稱可以不一樣,但是需導入doris的列必須和doris列名一緻才能自動導入
columns from path as (dt):讀取hdfs路徑上值作為傳入doris的參數
set (cnt = 1):相當于給源表增加一列,這樣進doris時就有預聚合後的cnt
           

|

|

|

====================================================================

@羲凡——隻為了更好的活着

若對部落格中有任何問題,歡迎留言交流

繼續閱讀