全部产品
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
数据集成

HDFS通过数据集成导入/导出

更新时间:2017-11-21 10:05:10

数据集成(Data Integration)是阿里巴巴集团提供的数据同步平台。该平台具备可跨异构数据存储系统、可靠、安全、低成本、可弹性扩展等特点,可为20多种数据源提供不同网络环境下的离线(全量/增量)数据进出通道。详情请参见 支持的数据源类型

本文将为您介绍如何通过数据集成在 HDFS 中进行数据的 导入导出 操作。

应用场景

  • HDFS 可以通过数据集成的同步任务将数据同步到到其他的数据源中,并对数据进行相应的处理。

  • 也可以通过数据集成的同步任务将处理好的其他数据源数据同步到 HDFS。

流程概述

liu3.jpg

步骤1:数据源端新建表。

步骤2:新增数据源。

步骤3:向导模式或脚本模式配置同步任务。

步骤4:运行同步任务,检查目标端的数据质量。

准备工作

  1. 开通阿里云主账号,并建好账号的访问秘钥,即 AccessKeys。

  2. 开通 MaxCompute,这样会自动产生一个默认的 MaxCompute 数据源,并使用主账号登录 DataWorks。

  3. 创建项目。您可以在项目中协作完成工作流,共同维护数据和任务等,因此使用 DataWorks 之前需要先创建一个项目。

    注意

    如果您想通过子账号创建数据集成任务,可以赋予其相应的权限。详情请参见 准备 RAM 子账号项目成员管理

操作步骤

数据源端新建表

您可以使用 建表语句 或直接通过 客户端建表,不同的数据源清参见相应数据库的官方文档进行创建。

新增数据源

注意:

只有项目管理员角色才能够新建数据源,其他角色的成员仅能查看数据源。

本文以添加 HDFS 的数据源为例:

  1. 以开发者身份进入 DataWorks 管理控制台,单击对应项目操作栏中的 进入工作区

  2. 单击顶部菜单栏中的 数据集成,导航至 数据源 页面。

  3. 单击 新增数据源,弹出支持的数据源类型,如下图所示:

  4. 选择数据源类型为 HDFS。

  5. 配置 HDFS 数据源的各个信息项,如下图所示:

    1

    配置项说明:

    • 数据源名称: 由英文字母、数字、下划线组成且需以字符或下划线开头,长度不超过 60 个字符。

    • 数据源描述: 对数据源进行简单描述,不得超过 80 个字符。

    • defaultFS:nameNode 节点地址,格式 hdfs://ServerIP:Port。

  6. 单击 测试连通性

  7. 测试连通性成功后,单击 确定

脚本模式配置同步任务

通过数据集成导入数据

以脚本模式将 MySQL 数据同步到 HDFS 为例:

  1. 进入 数据集成 页面,新建同步任务,如下图所示:

    1

    • 向导模式:向导模式是可视化界面配置同步任务,共五步:选择来源,选择目标,字段映射,通道控制,预览保存。在每个不同的数据源之间,这几步的界面可能有不同的内容,向导模式可以转换成脚本模式。

    • 脚本模式:进入脚本界面你可以选择相应的模板,此模板包含了同步任务的主要参数,将相关的信息填写完整,但是脚本模式不能转化成向导模式。

  2. 选择 脚本模式 配置同步任务,如下所示:

    1. {
    2. "type": "job",
    3. "configuration": {
    4. "setting": {
    5. "speed": {
    6. "concurrent": "9",//作业并发数
    7. "mbps": "9"//作业速率上限
    8. },
    9. "errorLimit": {
    10. "record": "0"//错误记录数超过
    11. }
    12. },
    13. "reader": {
    14. "parameter": {
    15. "splitPk": "",//切分键
    16. "column": [
    17. "id"//数据源表列
    18. ],
    19. "table": "lzz",//数据源表
    20. "where": "",//过滤条件
    21. "datasource": "lzz_mysql"//数据源名,建议数据源都先添加数据源后再配置同步任务,此配置项填写的内容必须要与添加的数据源名称保持一致
    22. },
    23. "plugin": "mysql"
    24. },
    25. "writer": {
    26. "parameter": {
    27. "fileType": "text",//文件的类型,目前只支持用户配置为”text”, “orc” 或 “parquet”。
    28. "writeMode": "append",//Hdfs Writer 写入前数据清理处理模式
    29. "fieldDelimiter": "\t",//写入时的字段分隔符,需要用户保证与创建的 Hive 表的字段分隔符一致
    30. "encoding": "UTF-8",
    31. "column": [
    32. {
    33. "name": "id",//目标列名
    34. "type": "TINYINT"//数据类型
    35. }
    36. ],
    37. "fileName": "lzz",//文件名
    38. "path": "/user/hive/warehouse/hdfswriter.db/text_table",//文件路径
    39. "defaultFS": "hdfs://ip:端口"//链接地址
    40. },
    41. "plugin": "hdfs"
    42. }
    43. },
    44. "version": "1.0"
    45. }

通过数据集成导出数据

以 HDFS 同步到 MySQL 为例:

选择 脚本模式 配置同步任务,如下所示:

  1. {
  2. "configuration": {
  3. "setting": {
  4. "speed": {
  5. "concurrent": "9",//作业并发数
  6. "mbps": "9"//作业速率上限
  7. },
  8. "errorLimit": {
  9. "record": "0"//错误记录数超过
  10. }
  11. },
  12. "reader": {
  13. "parameter": {
  14. "fileType": "text",//文件的类型,目前只支持用户配置为”text”, “orc” 或 “parquet”。
  15. "fieldDelimiter": "\t",//写入时的字段分隔符,需要用户保证与创建的 Hive 表的字段分隔符一致
  16. "encoding": "UTF-8",
  17. "column": [
  18. {
  19. "index": 0,//第0列
  20. "type": "string"//数据类型
  21. }
  22. ],
  23. "path": [
  24. "/user/hive/warehouse/hdfswriter.db/text_table/zz*"文件路径
  25. ],
  26. "defaultFS": "hdfs://IP:端口"//链接地址
  27. },
  28. "plugin": "hdfs"
  29. },
  30. "writer": {
  31. "parameter": {
  32. "preSql": [],//导入前准备语句
  33. "truncate": false,
  34. "column": [
  35. "id"//目标的列名
  36. ],
  37. "table": "lzz",//目标表名
  38. "datasource": "lzz_mysql",//数据源名,建议数据源都先添加数据源后再配置同步任务,此配置项填写的内容必须要与添加的数据源名称保持一致
  39. "postSql": []//导入后准备语句
  40. },
  41. "plugin": "mysql"
  42. }
  43. },
  44. "type": "job",
  45. "version": "1.0"
  46. }

运行同步任务,检查目标端的数据质量

运行结果,如下图所示:

1

注意:

同步任务保存后,直接单击 运行,任务会立刻运行或单击右边的 提交,将同步任务提交到调度系统中,调度系统会按照配置属性在从第二天开始自动定时执行,相关调度的配置请参见 调度配置介绍

其他的配置同步任务详细信息请参见下述文档:

本文导读目录