全部產品
Search
文件中心

AnalyticDB:資料匯入方式介紹

更新時間:Jul 06, 2024

為滿足多樣化的資料匯入需求,AnalyticDB for MySQL提供了多種資料匯入方式,包括:通過外表匯入資料、通過DataWorks匯入資料、通過DTS匯入資料以及使用JDBC通過程式匯入資料等。您可以通過本文瞭解各匯入方式的特性及適用情境,協助您選擇合適的資料匯入方式。

通過外表匯入資料

AnalyticDB for MySQL內建不同資料來源的訪問鏈路,支援通過建立外表來映射外部資料源,並發地讀取外部資料並匯入到AnalyticDB for MySQL。通過外表匯入資料會最大限度地利用叢集資源,實現高效能資料匯入。

基本特性

  • 適合大批量資料:匯入鏈路大量操作,適合單任務進行大量資料匯入的情境。

  • 資源消耗大:利用叢集資源進行高效能匯入,建議在業務低峰期使用。

  • 批量可見:資料匯入任務完成前資料不可見,任務完成後匯入的資料批量可見。

  • 分區覆蓋:通過外表匯入的資料分區會覆蓋表中已存在的同一分區。

  • 構建索引:通過外表匯入會同步構建索引,匯入任務完成則產生索引,可提升查詢效能。

常見使用情境

  • 數倉初始化

    當存在TB級資料需要初始化匯入到AnalyticDB for MySQL進行分析,建議先將資料存放在OSS或者HDFS,再通過外表高效匯入。

  • 離線數倉加速

    離線資料運行在MaxCompute等離線數倉上,單天資料增量達到幾十GB甚至TB級,需要每天匯入資料到AnalyticDB for MySQL進行資料加速分析。

使用方法

資料匯入方式分為常規匯入(預設)和彈性匯入。常規匯入在計算節點中讀取來源資料,然後在儲存節點中構建索引,消耗計算資源和儲存資源。彈性匯入在Serverless Spark Job中讀取來源資料和構建索引,消耗Job型資源群組的資源,併產生一定費用。具體對比如下:

常規匯入與彈性匯入對比

對比項

常規匯入

彈性匯入

支援的核心版本

無限制

3.1.10.0及以上核心版本。

適用情境

  • 匯入資料量小。

  • 對匯入任務的速度和並發數沒有要求。

  • 需要降低Worker資源消耗,加速資料匯入。

  • 存在多個表的匯入任務

  • 需要將大量資料匯入至分區表。

支援的資料來源

開啟方式

預設開啟。

3.1.10以上版本預設開啟。

使用限制

  • 彈性匯入僅支援通過INSERT OVERWRITE INTO語句將外表中的資料匯入至AnalyticDB MySQL企業版及湖倉版

  • 彈性匯入支援以下SQL操作:

    • 僅支援從單個表匯入資料,不支援多個表Join。

    • 僅支援WHERE和LIMIT文法,不支援ORDER BY等其他文法。

    • SELECT語句的列和值僅支援*、列名、預設值和常量,不支援使用SQL函數等其他文法。

  • 彈性匯入僅支援匯入資料到事實表。

  • 彈性匯入支援的資料類型為:booleantinyintsmallintintbigintfloatdoubledecimalvarchardatetimedatetimetimestamp

匯入任務並發數

常規匯入任務最多支援2個任務並發執行。

彈性匯入任務最多支援32個任務並發執行。

說明

您可以設定adb.load.job.max.acu參數增大單個彈性任務使用的最多資源,提高任務執行並發度。adb.load.job.max.acu參數的預設值為叢集shard個數+1。您可設定為k*預設值(k>=1),建議變數K的最大值不超過當前置入任務表的分區數量。查看叢集Shard數和分區數的方法如下:

  • 查看叢集Shard數:

    SELECT count(1) FROM information_schema.kepler_meta_shards;
  • 查看分區數的方法,請參見查看錶的資料量

消耗的資源

常規匯入在Interactive型資源群組(常駐Executor計算節點)上讀取來源資料,在儲存節點(Worker)上構建索引,該過程會大量消耗Interactive型資源群組(常駐Executor計算節點)和儲存節點(Worker節點)的資源。

說明

執行常規匯入任務時,儲存節點CPU使用率、IO使用率等監控指標較高,會對線上讀寫業務產生影響。

彈性匯入在Job型資源群組(動態拉起的Executor計算節點)上讀取來源資料和構建索引,該過程不會消耗儲存節點(Worker)資源。僅消耗少量儲存節點(Worker)資源將構建的熱分區資料(包括資料格式和索引)下載到本地。

說明

彈性匯入任務會消耗少量的儲存節點(Worker)資源,但不消耗Interactive型資源群組(常駐Executor計算節點)資源。因此在監控頁面查看的儲存節點CPU使用率、IO使用率指標會偏低,且也無TPS指標。

匯入任務的速度

常規匯入任務速度與匯入配置、匯入方式、匯入表結構等相關,您可以參考資料匯入效能最佳化文檔瞭解不同情境下的資料匯入調優方法。

當Job型資源群組資源充足時,彈性匯入任務執行並發度更高,匯入速度更快。同時也支援通過並行運行多個彈性匯入任務加速匯入,也支援通過增大單個彈性匯入任務使用的資源加速匯入。

使用建議:

  • 彈性匯入任務最少需要2~3分鐘完成,因此不適用於資料量較小的匯入任務。若您的匯入任務完成時間小於3分鐘,建議使用常規方式匯入資料。

  • 相同資源下單個彈性匯入任務的完成時間大於常規匯入任務的完成時間。若您對匯入任務完成時間有較高的要求,請增加單個彈性任務的最多使用資源加速匯入任務完成。

匯入效能調優

如何提升外表匯入資料的效能,請參見通用外表匯入資料調優

通過DataWorks匯入資料

DataWorks提供了可視化的資料匯入方式,可以將多種資料來源匯入到AnalyticDB for MySQL。相對於通過外表匯入資料的方法,DataWorks匯入資料更為輕量化,適合資料量相對較小的資料匯入情境。

說明

不建議通過DataWorks匯入大量資料。如果存在數百GB以上的資料匯入,建議通過外表匯入資料。詳情請參見通過外表匯入資料

常見使用情境

  • 分鐘/小時級資料匯入

    需要每分鐘或每小時抽取少量資料到AnalyticDB for MySQL進行資料分析。

  • 多種異構資料來源匯入

    需要匯入OTS、Redis、PostgreSQL等多種資料來源的資料到AnalyticDB for MySQL

使用方法

匯入效能調優

如何提升DataWorks匯入資料的效能,請參見通過DataWorks匯入資料調優

通過DTS匯入資料

Data Transmission Service (DTS)是阿里雲提供的即時資料流服務,支援關係型資料庫(RDBMS)、非關係型的資料庫(NoSQL)、資料多維分析(OLAP)等資料來源間的資料互動。相對於傳統資料移轉或同步工具,DTS為您提供功能更豐富、傳輸效能更強、易用性更高且安全可靠的服務,協助您簡化複雜的資料互動工作,專註於上層的業務開發。您可以將多種資料來源,通過DTS匯入到AnalyticDB for MySQL中,輕鬆實現資料轉送和即時分析。

常見使用情境

  • 秒級即時同步

    例如把業務庫RDS for MySQLPolarDB for MySQL資料庫的資料即時同步到AnalyticDB for MySQL中進行分析。

  • 多源匯聚

    例如業務有多個RDS for MySQLPolarDB for MySQL執行個體,可以將多個執行個體的資料同步到一個AnalyticDB for MySQL叢集中進行分析。且通過DTS提供的多表合并功能,具有相同結構的多個源表可以同步到AnalyticDB for MySQL叢集的一張表中進行後續分析。

使用方法

通過JDBC使用程式匯入資料

在資料清洗或複雜非結構化資料情境下,當外表和DataWorks匯入無法滿足定製化匯入需求時,可以編寫程式通過JDBC匯入資料。

常見使用情境

  • 資料預先處理後匯入

    業務端即時產生記錄檔,需要對記錄檔進行自動化解析並即時匯入AnalyticDB for MySQL

  • 非雲上資料匯入

    當資料無法上傳到OSSHDFS或者MaxCompute時,需要將本機資料匯入AnalyticDB for MySQL

使用方法與建議

匯入效能調優

如何提升使用應用程式匯入資料的效能,請參見通過JDBC使用程式匯入資料調優

通過資料同步功能匯入資料

AnalyticDB for MySQL自身提供了豐富的資料同步功能,包括資料管道服務(APS),元數探索服務,Hive資料移轉等功能,可用於發現和組織OSS中繼資料、即時同步SLSKafka資料到AnalyticDB for MySQL的資料湖或資料倉儲,以及遷移Hive資料到OSS並進行後續資料分析。

常見使用情境

  • 低成本儲存和分析情境

    當您希望將日誌(SLS)和訊息類(Kafka)資料進行長期低成本儲存以及大規模分析時,可以通過資料管道服務(APS)將SLSKafka資料即時同步至AnalyticDB for MySQL的資料湖或資料倉儲中。

  • 中繼資料發現情境

    OSS上有大量資料檔案,但缺少相應的中繼資料,這些資料檔案難以管理和分析。通過AnalyticDB for MySQL提供的中繼資料探索服務,可以自動建立中繼資料層次(庫、表、分區),並自動識別資料格式和欄位資訊,產生表結構。通過建立中繼資料,可以讓資料被其他分析引擎識別並進行後續分析。

  • Hive資料移轉情境

    當您希望由AnalyticDB for MySQL來管理(包括中繼資料管理和後續分析)儲存在Hive中的資料時,可以通過Hive資料移轉功能將Hive資料移轉到OSS,並自動組織中繼資料進行後續分析。

使用方法