自動同步整個 MySQL/Oracle 資料庫以進行資料分析
來源:大資料雜貨鋪
當 Flink 作業啟動時,Connector 會自動檢查源資料庫和 Apache Doris 之間的資料等效性。如果資料來源包含 Doris 中不存在的表,Connector 會自動在 Doris 中建立相同的表,並利用 Flink 的側輸出來方便一次攝取多個表;如果源中發生架構更改,它將自動獲取 DDL 語句並在 Doris 中進行相同的架構更改。
對於MySQL:
下載 JAR 檔案:
行家:
<dependency><groupId>org.apache.doris</groupId><artifactId>flink-doris-connector-1.15</artifactId><!--artifactId>flink-doris-connector-1.16</artifactId--><!--artifactId>flink-doris-connector-1.17</artifactId--><version>1.4.0</version></dependency>
對於Oracle:
Flink 1.15:
Flink 1.16:
Flink 1.17:
如何使用它
<FLINK_HOME>/bin/flink run \-Dexecution.checkpointing.interval=10s \-Dparallelism.default=1 \-c org.apache.doris.flink.tools.cdc.CdcTools \lib/flink-doris-connector-1.16-1.4.0.jar \mysql-sync-database \--database test_db \--mysql-conf hostname=127.0.0.1 \--mysql-conf username=root \--mysql-conf password=123456 \--mysql-conf database-name=mysql_db \--including-tables "tbl|test.*" \--sink-conf fenodes=127.0.0.1:8030 \--sink-conf username=root \--sink-conf password=123456 \--sink-conf jdbc-url=jdbc:mysql://127.0.0.1:9030 \--sink-conf sink.label-prefix=label1 \--table-conf replication_num=1
表現如何
1000 個 MySQL 表,每個表有 100 個欄位。所有表都是活動的(這意味著它們不斷更新,每次資料寫入涉及一百多行) Flink作業檢查點:10s
根據早期採用者的反饋,該Connector在生產環境中的萬表資料庫同步中也提供了高效能和系統穩定性。這證明Apache Doris和Flink CDC的結合能夠高效可靠地進行大規模資料同步。
2、節儉 SDK
3、按需流載入
4、後端節點輪詢
5、支援更多資料型別
三、用法示例
CREATE TABLE flink_doris_source (
name STRING,
age INT,
score DECIMAL(5,2)
)
WITH (
'connector' = 'doris',
'fenodes' = '127.0.0.1:8030',
'table.identifier' = 'database.table',
'username' = 'root',
'password' = 'password',
'doris.filter.query' = 'age=18'
);
SELECT * FROM flink_doris_source;
連線維度表和事實表:
CREATE TABLE fact_table (
`id` BIGINT,
`name` STRING,
`city` STRING,
`process_time` as proctime()
) WITH (
'connector' = 'kafka',
...
);
create table dim_city(
`city` STRING,
`level` INT ,
`province` STRING,
`country` STRING
) WITH (
'connector' = 'doris',
'fenodes' = '127.0.0.1:8030',
'jdbc-url' = 'jdbc:mysql://127.0.0.1:9030',
'lookup.jdbc.async' = 'true',
'table.identifier' = 'dim.dim_city',
'username' = 'root',
'password' = ''
);
SELECT a.id, a.name, a.city, c.province, c.country,c.level
FROM fact_table a
LEFT JOIN dim_city FOR SYSTEM_TIME AS OF a.process_time AS c
ON a.city = c.city
寫入Apache
Doris:
CREATE TABLE doris_sink ( name STRING, age INT, score DECIMAL(5,2) ) WITH ( 'connector' = 'doris', 'fenodes' = '127.0.0.1:8030', 'table.identifier' = 'database.table', 'username' = 'root', 'password' = '', 'sink.label-prefix' = 'doris_label', //json write in 'sink.properties.format' = 'json', 'sink.properties.read_json_by_line' = 'true');
原文作者:ApacheDoris
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70027826/viewspace-2988674/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在兩個資料庫之間進行資料同步資料庫
- DataX將MySql資料庫資料同步到Oracle資料庫MySql資料庫Oracle
- ElasticSearch + Logstash進行資料庫同步Elasticsearch資料庫
- Mysql資料庫自動備份MySql資料庫
- 自動備份Oracle資料庫Oracle資料庫
- 資料分析-以最小顆粒的方式進行
- MySQL資料庫自動補全命令MySql資料庫
- mysql資料庫語句自動生成MySql資料庫
- DataX將Oracle資料庫資料同步到達夢資料庫Oracle資料庫
- 使用python進行Oracle資料庫效能趨勢分析PythonOracle資料庫
- [資料庫]MYSQL主從同步資料庫MySql主從同步
- 4 配置Oracle資料庫自動啟動Oracle資料庫
- oracle資料庫開機自動啟動Oracle資料庫
- 每天自動備份Oracle資料庫Oracle資料庫
- 不同Oracle資料庫之間的資料同步Oracle資料庫
- Oracle資料庫資料物件分析(上)Oracle資料庫物件
- Oracle資料庫資料物件分析(轉)Oracle資料庫物件
- 使用MySQL Workbench進行資料庫備份MySql資料庫
- Oracle 資料庫引數調整Oracle資料庫
- oracle資料庫的效能調整Oracle資料庫
- 同步寫兩個資料庫資料庫
- 用python進行資料分析的五個最常用庫Python
- 同步寫兩個資料庫--多執行緒資料庫執行緒
- 利用Kettle進行資料同步(下)
- 利用Kettle進行資料同步(上)
- 使用RMAN進行Oracle資料庫遷移Oracle資料庫
- 自動更新資料庫資料的shell資料庫
- 以Lgwr Worker為例,基於Strace 分析 Oracle 資料庫行為的方法Oracle資料庫
- 基於DataX的資料同步(下)-應用DataX進行資料同步
- oracle資料庫配置goldengate同步Oracle資料庫Go
- Oracle資料庫同步技術1Oracle資料庫
- Oracle資料庫同步技術2Oracle資料庫
- Oracle資料庫同步技術3Oracle資料庫
- Oracle資料庫同步技術4Oracle資料庫
- Oracle資料庫同步技術5Oracle資料庫
- Python 連線mysql資料庫進行操作PythonMySql資料庫
- 使用 xtrabackup 進行MySQL資料庫物理備份MySql資料庫
- 啟動MySql資料庫MySql資料庫