數據導入方式介紹
為滿足多樣化的數據導入需求,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及以上內核版本。 |
適用場景 |
|
|
支持的數據源 | ||
開啟方式 | 默認開啟。 | 3.1.10以上版本默認開啟。 |
使用限制 | 無 |
|
導入任務并發數 | 常規導入任務最多支持2個任務并發執行。 | 彈性導入任務最多支持32個任務并發執行。 說明 您可以設置adb.load.job.max.acu參數增大單個彈性任務使用的最多資源,提高任務執行并發度。adb.load.job.max.acu參數的默認值為集群shard個數+1。您可設置為
|
消耗的資源 | 常規導入在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導入數據分為3個步驟。
配置源端數據源。支持的數據源包括:RDS for MySQL、Oracle、RDS for SQL Server、OSS、MaxCompute及HDFS。
導入性能調優
如何提升DataWorks導入數據的性能,請參見通過DataWorks導入數據調優。
通過DTS導入數據
數據傳輸服務 DTS(Data Transmission Service)是阿里云提供的實時數據流服務,支持關系型數據庫(RDBMS)、非關系型的數據庫(NoSQL)、數據多維分析(OLAP)等數據源間的數據交互。相對于傳統數據遷移或同步工具,DTS為您提供功能更豐富、傳輸性能更強、易用性更高且安全可靠的服務,幫助您簡化復雜的數據交互工作,專注于上層的業務開發。您可以將多種數據源,通過DTS導入到AnalyticDB for MySQL中,輕松實現數據傳輸和實時分析。
常見使用場景
秒級實時同步
例如把業務庫RDS for MySQL、PolarDB for MySQL數據庫的數據實時同步到AnalyticDB for MySQL中進行分析。
多源匯聚
例如業務有多個RDS for MySQL或PolarDB for MySQL實例,可以將多個實例的數據同步到一個AnalyticDB for MySQL集群中進行分析。且通過DTS提供的多表合并功能,具有相同結構的多個源表可以同步到AnalyticDB for MySQL集群的一張表中進行后續分析。
使用方法
通過JDBC使用程序導入數據
在數據清洗或復雜非結構化數據場景下,當外表和DataWorks導入無法滿足定制化導入需求時,可以編寫程序通過JDBC導入數據。
常見使用場景
數據預處理后導入
業務端實時產生日志文件,需要對日志文件進行自動化解析并實時導入AnalyticDB for MySQL。
非云上數據導入
當數據無法上傳到OSS、HDFS或者MaxCompute時,需要將本地數據導入AnalyticDB for MySQL。
使用方法與建議
應用程序連接AnalyticDB for MySQL,需要配置支持的JDBC驅動,詳情請參見MySQL JDBC驅動版本。
導入數據量大,且需長時間操作時,建議配置連接池,詳情請參見Druid連接池配置。
應用導入支持批量導入和并發導入,以獲得更高的導入性能。
關于流式數據導入,請參見Flink數據導入。
關于非定制化本地數據導入,請參見通過LOAD DATA導入至數倉版、通過導入工具導入至數倉版。
導入性能調優
如何提升使用應用程序導入數據的性能,請參見通過JDBC使用程序導入數據調優。
通過數據同步功能導入數據
AnalyticDB for MySQL自身提供了豐富的數據同步功能,包括數據管道服務(APS),元數發現服務,Hive數據遷移等功能,可用于發現和組織OSS元數據、實時同步SLS、Kafka數據到AnalyticDB for MySQL的數據湖或數據倉庫,以及遷移Hive數據到OSS并進行后續數據分析。
常見使用場景
低成本存儲和分析場景
當您希望將日志(SLS)和消息類(Kafka)數據進行長期低成本存儲以及大規模分析時,可以通過數據管道服務(APS)將SLS和Kafka數據實時同步至AnalyticDB for MySQL的數據湖或數據倉庫中。
元數據發現場景
OSS上有大量數據文件,但缺少相應的元數據,這些數據文件難以管理和分析。通過AnalyticDB for MySQL提供的元數據發現服務,可以自動建立元數據層次(庫、表、分區),并自動識別數據格式和字段信息,生成表結構。通過建立元數據,可以讓數據被其他分析引擎識別并進行后續分析。
Hive數據遷移場景
當您希望由AnalyticDB for MySQL來管理(包括元數據管理和后續分析)存儲在Hive中的數據時,可以通過Hive數據遷移功能將Hive數據遷移到OSS,并自動組織元數據進行后續分析。