AnalyticDB导入MaxCompute数据的几种方式

文章目录


一、简介

1、 AnalyticDB

云原生数据仓库 AnalyticDB MySQL 版(以下简称AnalyticDB for MySQL)是全托管的PB级实时数仓,支持毫秒级数据更新和亚秒级查询响应,高度兼容MySQL协议。

AnalyticDB for MySQL基于湖仓一体架构,无论是数据湖中的非结构化或半结构化数据,还是数据仓库中的结构化数据,都能统一高效地处理,帮助企业构建全面的数据分析平台。它不仅支持大规模离线数据处理以满足深度洞察需求,同时也提供高性能在线分析能力,帮助企业快速响应业务变化,实现降本增效。

  • 离线ETL处理

从数据源抽取数据,并经过清洗转换后,加载到AnalyticDB for MySQL。通过调度工具(DMSDataWorksAirflowDolphinSchedulerAzkaban等)实现周期性ETL处理。

  • Spark数据分析

AnalyticDB for MySQL集成了Spark计算引擎。您可以基于Spark SQL查询结构化数据,利用Spark JAR包开发复杂批处理任务,或通过PySpark执行机器学习及数据科学计算。

2、MaxCompute

云原生大数据计算服务(MaxCompute)是一种快速、完全托管的TB/PB级数据仓库解决方案。MaxCompute向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决用户海量数据计算问题,有效降低企业成本,并保障数据安全。

云原生大数据计算服务MaxCompute(原名ODPS)是阿里云自主研发的集高性价比多模计算企业级安全AI驱动 于一体的企业级SaaS化智能云数据仓库(AI-Native Datawarehouse)。

  • 产品简介

MaxCompute是面向分析的企业级SaaS模式智能化云数据仓库,以Serverless架构提供全托管、开箱即用的在线数据仓库服务,消除了传统数据平台在资源扩展性和弹性方面的限制。

计算存储的智能优化能力、开放的湖仓一体架构、近实时和交互式查询加速能力以及Data+AI一体化建设,使用户最小化运维投入、经济并高效地分析处理海量数据。

数以万计的企业正基于MaxCompute进行数据计算与分析,将数据高效转换为业务洞察。

  • 产品架构

MaxCompute的架构主要由存储层、计算层和统一的运维管控平台构成,共同构建在多可用区部署的稳固基础设施之上。

  • 存储层通过其存储引擎,整合了由标准、低频、长期等存储类型构成的原生存储体系,并支持开放的湖仓一体(OpenLake)架构。
  • 计算层通过多种引擎支持离线、近实时、Data+AI等多种计算任务。
  • 运维管控层作为平台的管理与控制核心,提供从项目、配额到优先级的资源治理,从资源观测、监控报警到作业诊断的全方位监控,以及完整的安全审计能力。
  • 整个平台通过标准的开发接入接口(如SDK/API/JDBC)与上层的DataWorks、PAI等产品集成。

3、DataWorks

DataWorks是一站式智能大数据开发治理平台,适配阿里云MaxCompute、E-MapReduce、Hologres、Flink、AnalyticDB、StarRocks、PAI 等数十种大数据和AI计算服务,为数据仓库、数据湖、湖仓一体、Data+AI解决方案提供全链路智能化的数据集成、大数据AI一体化开发、数据分析与主动式数据资产治理服务,帮助企业进行全生命周期数据管理。自2009年以来,DataWorks以阿里巴巴集团大数据建设方法论为基础,不断沉淀数据治理最佳实践,现已广泛应用于包括政务、金融、零售、互联网、汽车、制造等众多行业,数以万计的客户信赖并选择DataWorks进行数字化升级和价值创造。

二、同步方式

1、通过DataWorks导入

已完成数据源配置。您需要在数据集成同步任务配置前,配置好您需要同步的源端和目标端数据库,以便在同步任务配置过程中,可通过选择数据源名称来控制同步任务的读取和写入数据库。

  • 操作步骤
  1. 新增MaxCompute数据源。具体操作,请参见配置MaxCompute数据源。
  2. 新增AnalyticDB for MySQL数据源。具体操作,请参见配置AnalyticDB for MySQL 3.0数据源
  3. 创建数据同步任务。具体操作,请参见数据集成侧同步任务配置

2、通过外表导入MaxCompute数据

云原生数据仓库 AnalyticDB MySQL 版支持通过外表读取并导入MaxCompute数据。通过外表导入数据可以最大限度地利用集群资源,实现高性能数据导入。

2.1 数据准备

本文示例中的MaxCompute项目为odps_project,示例表odps_nopart_import_test。示例如下:

sql 复制代码
CREATE TABLE IF NOT EXISTS odps_nopart_import_test (
    id int,
    name string,
    age int)
partitioned by (dt string);

odps_nopart_import_test表中添加分区,示例如下:

sql 复制代码
ALTER TABLE odps_nopart_import_test 
ADD 
PARTITION (dt='202207');

向分区中添加数据,示例如下:

sql 复制代码
INSERT INTO odps_project.odps_nopart_import_test 
PARTITION (dt='202207') 
VALUES (1,'james',10),(2,'bond',20),(3,'jack',30),(4,'lucy',40);
2.2 操作步骤(数仓版)
  1. 连接目标AnalyticDB for MySQL集群。详细操作步骤,请参见连接集群

  2. 创建目标数据库。

    sql 复制代码
    CREATE database test_adb;
  3. 创建MaxCompute外表。本文以odps_nopart_import_test_external_table为例。

    sql 复制代码
    CREATE TABLE IF NOT EXISTS odps_nopart_import_test_external_table
    (
        id int,
        name string,
        age int,
        dt string
    )
     ENGINE='ODPS'
     TABLE_PROPERTIES='{
     "endpoint":"http://service.cn.maxcompute.aliyun-inc.com/api",
     "accessid":"yourAccessKeyID",
     "accesskey":"yourAccessKeySecret",
     "partition_column":"dt",
     "project_name":"odps_project1",
     "table_name":"odps_nopart_import_test"
     }';                 
    参数 说明
    ENGINE='ODPS' 外表的存储引擎。读写MaxCompute数据时,取值为ODPS。
    endpoint MaxCompute的EndPoint(域名节点)说明 目前仅支持AnalyticDB for MySQL通过MaxCompute的VPC网络Endpoint访问MaxCompute。查询各地域VPC网络的Endpoint,请参见VPC Endpoint
    accessid 阿里云账号或者具备MaxCompute访问权限的RAM用户的AccessKey ID。如何获取AccessKey ID和AccessKey Secret,请参见账号与权限
    accesskey 阿里云账号或者具备MaxCompute访问权限的RAM用户的AccessKey Secret。如何获取AccessKey ID和AccessKey Secret,请参见账号与权限
    partition_column 本文使用的示例是创建分区表的示例,所以需要配置partition_column。如果MaxCompute的表是非分区表,那么AnalyticDB for MySQL中也需要创建非分区表,此时无需配置partition_column
    project_name MaxCompute中的工作空间名称。
    table_name MaxCompute中的数据源表名。
  4. test_adb数据库中创建表adb_nopart_import_test,用于存储从MaxCompute中导入的数据。

    sql 复制代码
    CREATE TABLE IF NOT EXISTS adb_nopart_import_test
    (   id int,
        name string,
        age int,
        dt string,
        PRIMARY KEY(id,dt)
    )
    DISTRIBUTED BY HASH(id)
    PARTITION BY VALUE('dt') LIFECYCLE 30;
  5. 导入数据。

    • 方式一:执行INSERT INTO导入数据,当主键重复时会自动忽略当前写入数据,不做更新,作用等同于INSERT IGNORE INTO,详情请参见INSERT INTO。示例如下:

      sql 复制代码

    INSERT INTO adb_nopart_import_test

    SELECT * FROM odps_nopart_import_test_external_table;

    复制代码
    通过SELECT查询写入表中的数据,示例如下:
    
    ```sql
    SELECT * FROM adb_nopart_import_test;

    返回结果如下:

    sql 复制代码
    +------+-------+------+---------+
    | id   | name  | age  |   dt    |
    +------+-------+------+---------+
    |    1 | james |   10 |  202207 |
    |    2 | bond  |   20 |  202207 |
    |    3 | jack  |   30 |  202207 |
    |    4 | lucy  |   40 |  202207 |
    +------+-------+------+---------+

    如果需要将特定分区的数据导入adb_nopart_import_test,可以执行:

    sql 复制代码
    INSERT INTO adb_nopart_import_test
    SELECT * FROM odps_nopart_import_test_external_table
    WHERE dt = '202207';
    • 方式二:执行INSERT OVERWRITE导入数据,会覆盖表中原有的数据。示例如下:

      sql 复制代码
      INSERT OVERWRITE adb_nopart_import_test
      SELECT * FROM odps_nopart_import_test_external_table;
    • 方式三:异步执行INSERT OVERWRITE导入数据。通常使用SUBMIT JOB提交异步任务,由后台调度,可以在写入任务前增加Hint加速写入任务。详情请参见异步写入。示例如下:

      sql 复制代码
      SUBMIT JOB 
      INSERT OVERWRITE adb_nopart_import_test 
      SELECT * FROM odps_nopart_import_test_external_table;  

      返回结果如下:

      sql 复制代码
      +---------------------------------------+
      | job_id                                |
      +---------------------------------------+
      | 2020112122202917203100908203303****** |

      关于异步提交任务详情请参见异步提交导入任务

相关推荐
大大大大晴天1 小时前
Flink生产问题排障-Kryo serializer scala extensions are not available
大数据·flink
武子康2 天前
大数据-236 离线数仓 - 会员指标验证、DataX 导出与广告业务 ODS/DWD/ADS 全流程
大数据·后端·apache hive
武子康3 天前
大数据-235 离线数仓 - 实战:Flume+HDFS+Hive 搭建 ODS/DWD/DWS/ADS 会员分析链路
大数据·后端·apache hive
DianSan_ERP4 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
够快云库4 天前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全
AI周红伟4 天前
周红伟:智能体全栈构建实操:OpenClaw部署+Agent Skills+Seedance+RAG从入门到实战
大数据·人工智能·大模型·智能体
B站计算机毕业设计超人4 天前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法
计算机程序猿学长4 天前
大数据毕业设计-基于django的音乐网站数据分析管理系统的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
大数据·django·课程设计
B站计算机毕业设计超人4 天前
计算机毕业设计Django+Vue.js音乐推荐系统 音乐可视化 大数据毕业设计 (源码+文档+PPT+讲解)
大数据·vue.js·hadoop·python·spark·django·课程设计
十月南城4 天前
数据湖技术对比——Iceberg、Hudi、Delta的表格格式与维护策略
大数据·数据库·数据仓库·hive·hadoop·spark