为满足多样化的数据导入需求,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型资源组的资源,并产生一定费用。具体对比如下:
导入性能调优
如何提升外表导入数据的性能,请参见通用外表导入数据调优。
通过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,并自动组织元数据进行后续分析。