华为云用户手册

  • 新增字段 您可以单击字段映射界面的选择“添加新字段”自定义新增字段,通常用于标记数据库来源,以确保导入到目的端数据的完整性。 图1 字段映射 目前支持以下类型自定义字段: 常量 常量参数即参数值是固定的参数,不需要重新配置值。例如“lable”=“friends”用来标识常量值。 变量 您可以使用时间宏、表名宏、版本宏等变量来标记数据库来源信息。变量的语法:${variable},其中“variable”指的是变量。例如“input_time”=“${timestamp()}”用来标识当前时间的时间戳。 表达式 您可以使用表达式语言根据运行环境动态生成参数值。表达式的语法:#{expr},其中“expr”指的是表达式。例如“time”=“#{DateUtil.now()}”用来标识当前日期字符串。
  • 新建转换器 CDM 支持字段内容转换,如果需要可单击操作列下,进入转换器列表界面,再单击“新建转换器”。 图2 新建转换器 CDM可以在迁移过程中对字段进行转换,目前支持以下字段转换器: 脱敏 隐藏字符串中的关键信息,例如要将“12345678910”转换为“123****8910”,则配置如下: “起始保留长度”为“3”。 “结尾保留长度”为“4”。 “替换字符”为“*”。 去前后空格 自动去字符串前后的空值,不需要配置参数。 字符串反转 自动反转字符串,例如将“ABC”转换为“CBA”,不需要配置参数。 字符串替换 替换字符串,需要用户配置被替换的对象,以及替换后的值。 去换行 将字段中的换行符(\n、\r、\r\n)删除。 表达式转换 使用JSP表达式语言(Expression Language)对当前字段或整行数据进行转换。JSP表达式语言可以用来创建算术和逻辑表达式。在表达式内可以使用整型数,浮点数,字符串,常量true、false和null。 表达式支持以下两个环境变量: value:当前字段值。 row:当前行,数组类型。 表达式支持的工具类用法罗列如下,未列出即表示不支持: 如果当前字段为字符串类型,将字符串全部转换为小写,例如将“aBC”转换为“abc”。 表达式:StringUtils.lowerCase(value) 将当前字段的字符串全部转为大写。 表达式:StringUtils.upperCase(value) 如果想将第1个日期字段格式从“2018-01-05 15:15:05”转换为“20180105”。 表达式:DateUtils.format(DateUtils.parseDate(row[0],"yyyy-MM-dd HH:mm:ss"),"yyyyMMdd") 如果想将时间戳转换成“yyyy-MM-dd hh:mm:ss”格式的日期字符串的类型,例如字段值为“1701312046588”,转化后为“2023-11-30 10:40:46”。 表达式:DateUtils.format(NumberUtils.toLong(value),"yyyy-MM-dd HH:mm:ss") 如果想将“yyyy-MM-dd hh:mm:ss”格式的日期字符串转换成时间戳的类型。 表达式:DateUtils.getTime(DateUtils.parseDate(value,"yyyy-MM-dd hh:mm:ss")) 如果当前字段值为“yyyy-MM-dd”格式的日期字符串,需要截取年,例如字段值为“2017-12-01”,转换后为“2017”。 表达式:StringUtils.substringBefore(value,"-") 如果当前字段值为数值类型,转换后值为当前值的两倍。 表达式:value*2 如果当前字段值为“true”,转换后为“Y”,其它值则转换后为“N”。 表达式:value=="true"?"Y":"N" 如果当前字段值为字符串类型,当为空时,转换为“Default”,否则不转换。 表达式:empty value? "Default":value 如果想将日期字段格式从“2018/01/05 15:15:05”转换为“2018-01-05 15:15:05”。 表达式:DateUtils.format(DateUtils.parseDate(value,"yyyy/MM/dd HH:mm:ss"),"yyyy-MM-dd HH:mm:ss") 获取一个36位的UUID(Universally Unique Identifier,通用唯一识别码)。 表达式:CommonUtils.randomUUID() 如果当前字段值为字符串类型,将首字母转换为大写,例如将“cat”转换为“Cat”。 表达式:StringUtils.capitalize(value) 如果当前字段值为字符串类型,将首字母转换为小写,例如将“Cat”转换为“cat”。 表达式:StringUtils.uncapitalize(value) 如果当前字段值为字符串类型,使用空格填充为指定长度,并且将字符串居中,当字符串长度不小于指定长度时不转换,例如将“ab”转换为长度为4的“ab”。 表达式:StringUtils.center(value,4) 删除字符串末尾的一个换行符(包括“\n”、“\r”或者“\r\n”),例如将“abc\r\n\r\n”转换为“abc\r\n”。 表达式:StringUtils.chomp(value) 如果字符串中包含指定的字符串,则返回布尔值true,否则返回false。例如“abc”中包含“a”,则返回true。 表达式:StringUtils.contains(value,"a") 如果字符串中包含指定字符串的任一字符,则返回布尔值true,否则返回false。例如“zzabyycdxx”中包含“z”或“a”任意一个,则返回true。 表达式:StringUtils.containsAny(value,"za") 如果字符串中不包含指定的所有字符,则返回布尔值true,包含任意一个字符则返回false。例如“abz”中包含“xyz”里的任意一个字符,则返回false。 表达式:StringUtils.containsNone(value,"xyz") 如果当前字符串只包含指定字符串中的字符,则返回布尔值true,包含任意一个其它字符则返回false。例如“abab”只包含“abc”中的字符,则返回true。 表达式:StringUtils.containsOnly(value,"abc") 如果字符串为空或null,则转换为指定的字符串,否则不转换。例如将空字符转换为null。 表达式:StringUtils.defaultIfEmpty(value,null) 如果字符串以指定的后缀结尾(包括大小写),则返回布尔值true,否则返回false。例如“abcdef”后缀不为null,则返回false。 表达式:StringUtils.endsWith(value,null) 如果字符串和指定的字符串完全一样(包括大小写),则返回布尔值true,否则返回false。例如比较字符串“abc”和“ABC”,则返回false。 表达式:StringUtils.equals(value,"ABC") 从字符串中获取指定字符串的第一个索引,没有则返回整数-1。例如从“aabaabaa”中获取“ab”的第一个索引1。 表达式:StringUtils.indexOf(value,"ab") 从字符串中获取指定字符串的最后一个索引,没有则返回整数-1。例如从“aFkyk”中获取“k”的最后一个索引4。 表达式:StringUtils.lastIndexOf(value,"k") 从字符串中指定的位置往后查找,获取指定字符串的第一个索引,没有则转换为“-1”。例如“aabaabaa”中索引3的后面,第一个“b”的索引是5。 表达式:StringUtils.indexOf(value,"b",3) 从字符串获取指定字符串中任一字符的第一个索引,没有则返回整数-1。例如从“zzabyycdxx”中获取“z”或“a”的第一个索引0。 表达式:StringUtils.indexOfAny(value,"za") 如果字符串仅包含Unicode字符,返回布尔值true,否则返回false。例如“ab2c”中包含非Unicode字符,返回false。 表达式:StringUtils.isAlpha(value) 如果字符串仅包含Unicode字符或数字,返回布尔值true,否则返回false。例如“ab2c”中仅包含Unicode字符和数字,返回true。 表达式:StringUtils.isAlphanumeric(value) 如果字符串仅包含Unicode字符、数字或空格,返回布尔值true,否则返回false。例如“ab2c”中仅包含Unicode字符和数字,返回true。 表达式:StringUtils.isAlphanumericSpace(value) 如果字符串仅包含Unicode字符或空格,返回布尔值true,否则返回false。例如“ab2c”中包含Unicode字符和数字,返回false。 表达式:StringUtils.isAlphaSpace(value) 如果字符串仅包含ASCII可打印字符,返回布尔值true,否则返回false。例如“!ab-c~”返回true。 表达式:StringUtils.isAsciiPrintable(value) 如果字符串为空或null,返回布尔值true,否则返回false。 表达式:StringUtils.isEmpty(value) 如果字符串中仅包含Unicode数字,返回布尔值true,否则返回false。 表达式:StringUtils.isNumeric(value) 获取字符串最左端的指定长度的字符,例如获取“abc”最左端的2位字符“ab”。 表达式:StringUtils.left(value,2) 获取字符串最右端的指定长度的字符,例如获取“abc”最右端的2位字符“bc”。 表达式:StringUtils.right(value,2) 将指定字符串拼接至当前字符串的左侧,需同时指定拼接后的字符串长度,如果当前字符串长度不小于指定长度,则不转换。例如将“yz”拼接到“bat”左侧,拼接后长度为8,则转换后为“yzyzybat”。 表达式:StringUtils.leftPad(value,8,"yz") 将指定字符串拼接至当前字符串的右侧,需同时指定拼接后的字符串长度,如果当前字符串长度不小于指定长度,则不转换。例如将“yz”拼接到“bat”右侧,拼接后长度为8,则转换后为“batyzyzy”。 表达式:StringUtils.rightPad(value,8,"yz") 如果当前字段为字符串类型,获取当前字符串的长度,如果该字符串为null,则返回0。 表达式:StringUtils.length(value) 如果当前字段为字符串类型,删除其中所有的指定字符串,例如从“queued”中删除“ue”,转换后为“qd”。 表达式:StringUtils.remove(value,"ue") 如果当前字段为字符串类型,移除当前字段末尾指定的子字符串。指定的子字符串若不在当前字段的末尾,则不转换,例如移除当前字段“www.domain.com”后的“.com”。 表达式:StringUtils.removeEnd(value,".com") 如果当前字段为字符串类型,移除当前字段开头指定的子字符串。指定的子字符串若不在当前字段的开头,则不转换,例如移除当前字段“www.domain.com”前的“www.”。 表达式:StringUtils.removeStart(value,"www.") 如果当前字段为字符串类型,替换当前字段中所有的指定字符串,例如将“aba”中的“a”用“z”替换,转换后为“zbz”。 表达式:StringUtils.replace(value,"a","z") 如果当前字段为字符串类型,一次替换字符串中的多个字符,例如将字符串“hello”中的“h”用“j”替换,“o”用“y”替换,转换后为“jelly”。 表达式:StringUtils.replaceChars(value,"ho","jy") 如果字符串以指定的前缀开头(区分大小写),则返回布尔值true,否则返回false,例如当前字符串“abcdef”以“abc”开头,则返回true。 表达式:StringUtils.startsWith(value,"abc") 如果当前字段为字符串类型,去除字段中首、尾处所有指定的字符,例如去除“abcyx”中首尾所有的“x”、“y”、“z”和“b”,转换后为“abc”。 表达式:StringUtils.strip(value,"xyzb") 如果当前字段为字符串类型,去除字段末尾所有指定的字符,例如去除当前字段末尾的"abc"字符串。 表达式:StringUtils.stripEnd(value,"abc") 如果当前字段为字符串类型,去除字段开头所有指定的字符,例如去除当前字段开头的所有空格。 表达式:StringUtils.stripStart(value,null) 如果当前字段为字符串类型,获取字符串指定位置后(索引从0开始,包括指定位置的字符)的子字符串,指定位置如果为负数,则从末尾往前计算位置,末尾第一位为-1。例如获取“abcde”第2个字符(即c)及之后的字符串,则转换后为“cde”。 表达式:StringUtils.substring(value,2) 如果当前字段为字符串类型,获取字符串指定区间(索引从0开始,区间起点包括指定位置的字符,区间终点不包含指定位置的字符)的子字符串,区间位置如果为负数,则从末尾往前计算位置,末尾第一位为-1。例如获取“abcde”第2个字符(即c)及之后、第4个字符(即e)之前的字符串,则转换后为“cd”。 表达式:StringUtils.substring(value,2,4) 如果当前字段为字符串类型,获取当前字段里第一个指定字符后的子字符串。例如获取“abcba”中第一个“b”之后的子字符串,转换后为“cba”。 表达式:StringUtils.substringAfter(value,"b") 如果当前字段为字符串类型,获取当前字段里最后一个指定字符后的子字符串。例如获取“abcba”中最后一个“b”之后的子字符串,转换后为“a”。 表达式:StringUtils.substringAfterLast(value,"b") 如果当前字段为字符串类型,获取当前字段里第一个指定字符前的子字符串。例如获取“abcba”中第一个“b”之前的子字符串,转换后为“a”。 表达式:StringUtils.substringBefore(value,"b") 如果当前字段为字符串类型,获取当前字段里最后一个指定字符前的子字符串。例如获取“abcba”中最后一个“b”之前的子字符串,转换后为“abc”。 表达式:StringUtils.substringBeforeLast(value,"b") 如果当前字段为字符串类型,获取嵌套在指定字符串之间的子字符串,没有匹配的则返回null。例如获取“tagabctag”中“tag”之间的子字符串,转换后为“abc”。 表达式:StringUtils.substringBetween(value,"tag") 如果当前字段为字符串类型,删除当前字符串两端的控制字符(char≤32),例如删除字符串前后的空格。 表达式:StringUtils.trim(value) 将当前字符串转换为字节,如果转换失败,则返回0。 表达式:NumberUtils.toByte(value) 将当前字符串转换为字节,如果转换失败,则返回指定值,例如指定值配置为1。 表达式:NumberUtils.toByte(value,1) 将当前字符串转换为Double数值,如果转换失败,则返回0.0d。 表达式:NumberUtils.toDouble(value) 将当前字符串转换为Double数值,如果转换失败,则返回指定值,例如指定值配置为1.1d。 表达式:NumberUtils.toDouble(value,1.1d) 将当前字符串转换为Float数值,如果转换失败,则返回0.0f。 表达式:NumberUtils.toFloat(value) 将当前字符串转换为Float数值,如果转换失败,则返回指定值,例如配置指定值为1.1f。 表达式:NumberUtils.toFloat(value,1.1f) 将当前字符串转换为Int数值,如果转换失败,则返回0。 表达式:NumberUtils.toInt(value) 将当前字符串转换为Int数值,如果转换失败,则返回指定值,例如配置指定值为1。 表达式:NumberUtils.toInt(value,1) 将字符串转换为Long数值,如果转换失败,则返回0。 表达式:NumberUtils.toLong(value) 将当前字符串转换为Long数值,如果转换失败,则返回指定值,例如配置指定值为1L。 表达式:NumberUtils.toLong(value,1L) 将字符串转换为Short数值,如果转换失败,则返回0。 表达式:NumberUtils.toShort(value) 将当前字符串转换为Short数值,如果转换失败,则返回指定值,例如配置指定值为1。 表达式:NumberUtils.toShort(value,1) 将当前IP字符串转换为Long数值,例如将“10.78.124.0”转换为LONG数值是“172915712”。 表达式:CommonUtils.ipToLong(value) 从网络读取一个IP与物理地址映射文件,并存放到Map集合,这里的URL是IP与地址映射文件存放地址,例如“http://10.114.205.45:21203/sqoop/IpList.csv”。 表达式:HttpsUtils.downloadMap("url") 将IP与地址映射对象缓存起来并指定一个key值用于检索,例如“ipList”。 表达式:CommonUtils.setCache("ipList",HttpsUtils.downloadMap("url")) 取出缓存的IP与地址映射对象。 表达式:CommonUtils.getCache("ipList") 判断是否有IP与地址映射缓存。 表达式:CommonUtils.cacheExists("ipList") 根据IP取出对应的详细地址:国家_省份_城市_运营商,例如“1xx.78.124.0”对应的地址为“中国_广东_深圳_电信”,取不到对应地址则默认“**_**_**_**”。如果需要,可通过StringUtil类表达式对地址进行进一步拆分。 表达式:CommonUtils.getMapValue(CommonUtils.ipToLong(value),CommonUtils.cacheExists("ipLis")?CommonUtils.getCache("ipLis"):CommonUtils.setCache("ipLis",HttpsUtils.downloadMap("url"))) 根据指定的偏移类型(month/day/hour/minute/second)及偏移量(正数表示增加,负数表示减少),将指定格式的时间转换为一个新时间,例如将“2019-05-21 12:00:00”增加8个小时。 表达式:DateUtils.getCurrentTimeByZone("yyyy-MM-dd HH:mm:ss",value, "hour", 8) 如果value值为空或者null时,则返回字符串"aaa",否则返回value。 表达式:StringUtils.defaultIfEmpty(value,"aaa")
  • 配置HTTP源端参数 作业中源连接为HTTP连接时,源端作业参数如表1所示。当前只支持从HTTP URL导出数据,不支持导入。 表1 HTTP/HTTPS作为源端时的作业参数 参数名 说明 取值样例 文件URL 通过使用GET方法,从HTTP/HTTPS协议的URL中获取数据。 用于读取一个公网HTTP/HTTPS URL的文件,包括第三方对象存储的公共读取场景和网盘场景。 https://bucket.obs.myhuaweicloud.com/object-key 列表文件 选择“是”,将待上传的文本文件中所有URL对应的文件拉取到OBS,文本文件记录的是HDFS上的文件路径。 是 列表文件源连接 文本文件存储在OBS桶中,这里需要选择已建立的OBS连接。 obs_link 列表文件OBS桶 存储文本文件的OBS桶名称。 obs-cdm 列表文件或目录 在OBS中存储文本文件的文件自定义目录,多级目录可用“/”进行分隔。 test1 文件格式 当前CDM只支持选择“二进制格式”,不解析文件内容直接传输,不要求原文件格式必须为二进制。 二进制格式 压缩格式 选择对应压缩格式的源文件进行迁移: 无:表示传输所有格式的文件。 GZIP:表示只传输GZIP格式的文件。 ZIP:表示只传输ZIP格式的文件。 TAR.GZ:表示只传输TAR.GZ格式的文件。 无 压缩文件后缀 压缩格式非无时,显示该参数。 该参数需要解压缩的文件后缀名。当一批文件中以该值为后缀时,才会执行解压缩操作,否则保持原样传输。当输入*或为空时,所有文件都会被解压。 * 文件分隔符 传输多个文件时,CDM使用这里配置的文件分隔符来区分各个文件,默认为|。列表文件选择“是”时,不显示该参数。 | QUERY参数 该参数设置为“是”时,上传到OBS的对象使用的对象名,为去掉query参数后的字符。 该参数设置为“否”时,上传到OBS的对象使用的对象名,包含query参数。 否 忽略不存在原路径/文件 如果将其设为是,那么作业在源路径不存在的情况下也能成功执行。 否 MD5文件名后缀 校验CDM抽取的文件,是否与源文件一致,详细请参见MD5校验文件一致性。 .md5 父主题: 配置作业源端参数
  • 配置DDS连接 DDS连接适用于华为云上的文档数据库服务,常用于从DDS同步数据到大数据平台。 连接云服务DDS时,相关参数如表1所示。 表1 DDS连接参数 参数名 说明 取值样例 名称 连接的名称,根据连接的数据源类型,用户可自定义便于记忆、区分的连接名。 dds_link 服务器列表 服务器地址列表,输入格式为“数据库服务器域名或IP地址:端口”。多个服务器列表间以“;”分隔。 192.168.0.1:7300;192.168.0.2:7301 数据库名称 要连接的DDS数据库名称。 DB_dds 用户名 连接DDS的用户名。 cdm 密码 连接DDS的密码。 - 直连模式 适用于主节点网络通,副本节点网络不通场景。 说明: 直连模式服务器列表只能配一个ip。 直连适用于主节点网络通,副本节点网络不通场景。 否 父主题: 管理连接
  • 定时备份/恢复 该功能依赖于OBS服务。 前提条件 已创建OBS连接,详情请参见配置OBS连接。 定时备份 在CDM作业管理界面,单击“配置管理”页签,配置定时备份的参数。 表2 定时备份参数 参数 说明 配置样例 定时备份 自动备份功能的开关,该功能只备份作业,不会备份连接。 开 备份策略 所有作业:不管作业处于什么状态,CDM会备份所有表/文件迁移作业、整库迁移的作业。不备份历史作业。 分组作业:选择备份某一个或多个分组下的作业。 所有作业 备份周期 选择备份周期: 日:每天零点执行一次。 周:每周一零点执行一次。 月:每月1号零点执行一次。 日 备份写入OBS连接 CDM通过该连接,将作业备份到OBS,需要用户提前在“连接管理”界面创建好OBS连接。 obslink OBS桶 存储备份文件的OBS桶。 cdm 备份数据目录 存储备份文件的目录。 /cdm-bk/ 恢复作业 如果之前执行过自动备份,“配置管理”页签下会显示备份列表:显示备份文件所在的OBS桶、路径、备份时间。 您可以单击备份列表操作列的“恢复备份”来恢复CDM作业。
  • 最大抽取并发数 最大抽取并发数即集群最大抽取并发数。 CDM通过数据迁移作业,将源端数据迁移到目的端数据源中。其中,主要运行逻辑如下: 数据迁移作业提交运行后,CDM会根据作业配置中的“抽取并发数”参数,将每个作业拆分为多个Task,即作业分片。 不同源端数据源的作业分片维度有所不同,因此某些作业可能出现未严格按作业“抽取并发数”参数分片的情况。 CDM依次将Task提交给运行池运行。根据集群配置管理中的“最大抽取并发数”参数,超出规格的Task排队等待运行。 因此作业抽取并发数和集群最大抽取并发数参数设置为适当的值可以有效。提升迁移速度,您可参考下文有效配置抽取并发数。 集群最大抽取并发数的上限建议为vCPU核数*2,如表1所示。 表1 集群最大抽取并发数配置建议 规格名称 vCPUs/内存 集群并发数上限参考 cdm.large 8核 16GB 16 cdm.xlarge 16核 32GB 32 cdm.4xlarge 64核 128GB 128 作业抽取并发数的配置原则如下: 迁移的目的端为文件时,CDM不支持多并发,此时应配置为单进程抽取数据。 表中每行数据大小为1MB以下的可以设置多并发抽取,超过1MB的建议单线程抽取数据。 作业抽取并发数可参考集群最大抽取并发数配置,但不建议超过集群最大抽取并发数上限。 目的端为 DLI 数据源时,抽取并发数建议配置为1,否则可能会导致写入失败。
  • 作业参数的环境变量 CDM在创建迁移作业时,可以手动输入的参数(例如OBS桶名、文件路径等)、参数中的某个字段、或者字段中的某个字符,都支持配置为一个全局变量,方便您批量更改作业中的参数值,以及作业导出/导入后进行批量替换。 这里以批量替换作业中OBS桶名为例进行介绍。 在CDM作业管理界面,单击“配置管理”页签,配置环境变量。 bucket_1=A bucket_2=B 这里以变量“bucket_1”表示桶A,变量“bucket_2”表示桶B。 在创建CDM迁移作业的界面,迁移桶A的数据到桶B。 源端桶名配置为${bucket_1},目的端桶名配置为${bucket_2}。 图1 桶名配置为环境变量 如果下次要迁移桶C数据到桶D,则无需更改作业参数,只需要在“配置管理”界面将环境变量改为如下即可: bucket_1=C bucket_2=D
  • 创建CDM集群并绑定EIP 如果是独立CDM服务,参考创建集群创建CDM集群;如果是作为 DataArts Studio 服务CDM组件使用,参考创建集群创建CDM集群。 关键配置如下: CDM集群的规格,按待迁移的数据量选择,一般选择cdm.medium即可,满足大部分迁移场景。 CDM集群所在VPC、子网、安全组,选择与DWS集群所在的网络一致。 CDM集群创建完成后,选择集群操作列的“绑定弹性IP”,CDM通过EIP访问MySQL。 图1 集群列表 如果用户对本地数据源的访问通道做了SSL加密,则CDM无法通过弹性IP连接数据源。
  • 整库迁移支持的数据源类型 整库迁移适用于将本地数据中心或在E CS 上自建的数据库,同步到云上的数据库服务或大数据服务中,适用于数据库离线迁移场景,不适用于在线实时迁移。 数据集成支持整库迁移的数据源如表2所示。 表2 整库迁移支持的数据源 数据源分类 数据源 读取 写入 说明 数据仓库 数据仓库服务(DWS) 支持 支持 - Hadoop (仅支持本地存储,不支持存算分离场景,不支持Ranger场景,不支持ZK开启SSL场景) MRS HBase 支持 支持 整库迁移仅支持导出到MRS HBase。 建议使用的版本: 2.1.X 1.3.X MRS Hive 支持 支持 整库迁移仅支持导出到关系型数据库。 暂不支持2.x版本,建议使用的版本: 1.2.X 3.1.X FusionInsight HBase 支持 不支持 建议使用的版本: 2.1.X 1.3.X FusionInsight Hive 支持 不支持 整库迁移仅支持导出到关系型数据库。 暂不支持2.x版本,建议使用的版本: 1.2.X 3.1.X Apache HBase 支持 不支持 建议使用的版本: 2.1.X 1.3.X Apache Hive 支持 不支持 整库迁移仅支持导出到关系型数据库。 暂不支持2.x版本,建议使用的版本: 1.2.X 3.1.X MRS Hudi 支持 支持 支持本地存储、存算分离场景。 暂不支持2.x版本,建议使用的版本: 1.2.X 3.1.X 关系数据库 云数据库 MySQL 支持 支持 不支持OLTP到OLTP迁移,此场景推荐通过 数据复制服务 DRS进行迁移。 云数据库 PostgreSQL 支持 支持 云数据库 SQL Server 支持 支持 MySQL 支持 不支持 PostgreSQL 支持 不支持 Microsoft SQL Server 支持 不支持 Oracle 支持 不支持 SAP HANA 支持 不支持 仅支持2.00.050.00.1592305219版本。 仅支持Generic Edition。 不支持BW/4 FOR HANA。 仅支持英文字母的数据库名、表名与列名,不支持存在空格、符号等特殊字符。 仅支持日期、数字、布尔、字符(除SHORTTEXT) 类型的数据类型,不支持二进制类型等其他数据类型。 迁移时不支持目的端自动建表。 达梦数据库 DM 支持 不支持 仅支持导出到DWS、Hive NoSQL 分布式缓存服务(DCS) 不支持 支持 仅支持MRS到DCS迁移。 文档数据库服务(DDS) 支持 支持 仅支持DDS和MRS之间迁移。 表格存储服务 (CloudTable) 支持 支持 -
  • 表/文件迁移支持的数据源类型 表/文件迁移可以实现表或文件级别的数据迁移。 表/文件迁移时支持的数据源如表1所示。 表1 表/文件迁移支持的数据源 数据源分类 源端数据源 对应的目的端数据源 说明 数据仓库 数据仓库服务(DWS) 数据仓库:数据仓库服务(DWS), 数据湖探索 (DLI),MRS ClickHouse Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储: 对象存储服务 (OBS) 关系型数据库:云数据库 MySQL,云数据库 PostgreSQL,云数据库 SQL Server,MySQL,PostgreSQL,Microsoft SQL Server,Oracle NoSQL: 表格存储 服务(CloudTable) 搜索:Elasticsearch, 云搜索服务 CSS ) 不支持DWS物理机纳管模式。 数据湖 探索(DLI) 数据仓库:数据仓库服务(DWS),数据湖探索(DLI),MRS ClickHouse Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) 关系型数据库:云数据库 MySQL,云数据库 PostgreSQL,云数据库 SQL Server,MySQL,PostgreSQL,Microsoft SQL Server,Oracle NoSQL:表格存储服务(CloudTable),MongoDB 搜索:Elasticsearch, 云搜索 服务(CSS) MongoDB建议使用的版本:4.2。 MRS ClickHouse 数据仓库:MRS ClickHouse,数据湖探索(DLI) MRS ClickHouse建议使用的版本:21.3.4.X。 Hadoop MRS HDFS 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) 关系型数据库:云数据库 MySQL,云数据库 PostgreSQL,云数据库 SQL Server,MySQL,PostgreSQL,Microsoft SQL Server,Oracle NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) 支持本地存储,仅MRS Hive、MRS Hudi支持存算分离场景。 仅MRS Hive支持Ranger场景。 不支持ZK开启SSL场景。 MRS HDFS建议使用的版本: 2.8.X 3.1.X MRS HBase建议使用的版本: 2.1.X 1.3.X MRS Hive、MRS Hudi暂不支持2.x版本,建议使用的版本: 1.2.X 3.1.X MRS HBase MRS Hive 数据仓库:数据仓库服务(DWS),数据湖探索(DLI),MRS Clickhouse Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) 关系型数据库:云数据库 MySQL,云数据库 PostgreSQL,云数据库 SQL Server,MySQL,PostgreSQL,Microsoft SQL Server,Oracle NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) MRS Hudi 数据仓库:数据仓库服务(DWS) Hadoop:MRS HBase FusionInsight HDFS 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) FusionInsight数据源不支持作为目的端。 仅支持本地存储,不支持存算分离场景。 不支持Ranger场景。 不支持ZK开启SSL场景。 FusionInsight HDFS建议使用的版本: 2.8.X 3.1.X FusionInsight HBase建议使用的版本: 2.1.X 1.3.X FusionInsight Hive建议使用的版本: 1.2.X 3.1.X FusionInsight HBase FusionInsight Hive Apache HBase 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) Apache数据源不支持作为目的端。 仅支持本地存储,不支持存算分离场景。 不支持Ranger场景。 不支持ZK开启SSL场景。 Apache HBase建议使用的版本: 2.1.X 1.3.X Apache Hive暂不支持2.x版本,建议使用的版本: 1.2.X 3.1.X Apache HDFS建议使用的版本: 2.8.X 3.1.X Apache Hive Apache HDFS 对象存储 对象存储服务(OBS) 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) 对象存储服务之间的迁移,推荐使用 对象存储迁移 服务 OMS 。 不支持二进制文件导入到数据库或NoSQL。 文件系统 FTP 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) 对象存储:对象存储服务(OBS) 文件系统不支持作为目的端。 FTP/SFTP到搜索的迁移仅支持如CSV等文本文件,不支持二进制文件。 FTP/SFTP到OBS的迁移仅支持二进制文件。 HTTP到OBS的迁移推荐使用obsutil工具,请参见obsutil简介。 SFTP HTTP Hadoop:MRS HDFS 关系型数据库 云数据库 MySQL 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive,MRS Hudi 对象存储:对象存储服务(OBS) NoSQL:表格存储服务(CloudTable) 关系型数据库:云数据库 MySQL,云数据库 PostgreSQL,云数据库 SQL Server 搜索:Elasticsearch,云搜索服务(CSS) OLTP数据库之间的迁移推荐通过数据复制服务DRS进行迁移。 云数据库 MySQL不支持SSL模式。 Microsoft SQL Server建议使用的版本:2005以上。 金仓和 GaussDB 数据源可通过PostgreSQL连接器进行连接,支持的迁移作业的源端、目的端情况与PostgreSQL数据源一致。 云数据库 SQL Server 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) NoSQL:表格存储服务(CloudTable) 关系型数据库:云数据库 MySQL,云数据库 PostgreSQL,云数据库 SQL Server 搜索:Elasticsearch,云搜索服务(CSS) 云数据库 PostgreSQL MySQL 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive,MRS Hudi 对象存储:对象存储服务(OBS) NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) PostgreSQL Oracle Microsoft SQL Server 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) SAP HANA 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS Hive SAP HANA数据源存在如下约束: SAP HANA不支持作为目的端。 仅支持2.00.050.00.1592305219版本。 仅支持Generic Edition。 不支持BW/4 FOR HANA。 仅支持英文字母的数据库名、表名与列名,不支持存在空格、符号等特殊字符。 仅支持日期、数字、布尔、字符(除SHORTTEXT) 类型的数据类型,不支持二进制类型等其他数据类型。 迁移时不支持目的端自动建表。 分库 数据仓库:数据湖探索(DLI) Hadoop:MRS HBase,MRS Hive 搜索:Elasticsearch,云搜索服务(CSS) 对象存储:对象存储服务(OBS) 分库数据源不支持作为目的端。 神通(ST) Hadoop:MRS Hive,MRS Hudi - NoSQL 分布式缓存服务(DCS) Hadoop:MRS HDFS,MRS HBase,MRS Hive 除了表格存储服务(CloudTable)外,其他NoSQL数据源不支持作为目的端。 Redis到DCS的迁移,可以通过其他方式进行,请参见自建Redis迁移至DCS。 Redis 文档数据库服务(DDS) MongoDB 表格存储服务(CloudTable HBase) 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) 关系型数据库:云数据库 MySQL,云数据库 PostgreSQL,云数据库 SQL Server,MySQL,PostgreSQL,Microsoft SQL Server,Oracle NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) Cassandra 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) 消息系统 数据接入服务 (DIS) 搜索:云搜索服务(CSS) 消息系统不支持作为目的端。 Apache Kafka DMS Kafka MRS Kafka 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) 关系型数据库:云数据库 MySQL,云数据库 PostgreSQL,云数据库 SQL Server NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) MRS Kafka不支持作为目的端。 仅支持本地存储,不支持存算分离场景。 不支持Ranger场景。 不支持ZK开启SSL场景。 搜索 Elasticsearch 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) 关系型数据库:云数据库 MySQL,云数据库 PostgreSQL,云数据库 SQL Server NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) Elasticsearch仅支持非安全模式。 云搜索服务(CSS) 导入数据到CSS推荐使用Logstash,请参见使用Logstash导入数据到Elasticsearch。 上表中非云服务的数据源,例如MySQL,既可以支持用户本地数据中心自建的MySQL,也可以是用户在ECS上自建的MySQL,还可以是第三方云的MySQL服务。
  • 达梦数据库迁移时支持的数据类型 源端为达梦数据库,目的端为Hive、DWS时,支持的数据类型如下: 表11 达梦数据库作为源端时支持的数据类型 类别 类型 简要释义 存储格式示例 Hive DWS 字符 CHAR 用于存储指定定长字符串 ‘a’或‘aaaaa’ CHAR CHAR CHARACTER 与 CHAR 相同 ‘a’或‘aaaaa’ CHAR CHAR VARCHAR 用于存储指定变长字符串 ‘a’或‘aaaaa’ VARCHAR VARCHAR VARCHAR2 与 VARCHAR 相同 ‘a’或‘aaaaa’ VARCHAR VARCHAR 数值 NUMERIC 用于存储零、正负定点数 52.36 DECIMAL NUMERIC DECIMAL 与 NUMERIC 相似 52.36 DECIMAL NUMERIC DEC 与 DECIMAL 相同 52.36 DECIMAL NUMERIC NUMBER 与 NUMERIC 相同 52.36 DECIMAL NUMERIC INTEGER 用于存储有符号整数,精度为10,标度为0 5236 INT INTEGER INT 与 INTEGER 相同 5236 INT INTEGER BIGINT 用于存储有符号整数,精度为19,标度为0 5236 BIGINT BIGINT TINYINT 用于存储有符号整数,精度为3,标度为0 100 TINYINT SMALLINT SMALLINT 用于存储有符号整数,精度为5,标度为0 9999 SMALLINT SMALLINT BYTE 与 TINYINT 相似,精度为3,标度为0 100 TINYINT SMALLINT BINARY 用于存储定长二进制数据 0x2A3B4058 BINARY(NULL) BYTEA(NULL) VARBINARY 用于存储可变长二进制数据 0x2A3B4058 BINARY(NULL) BYTEA(NULL) FLOAT 用于存储带二进制精度的浮点数 52.36 FLOAT FLOAT8 DOUBLE 与FLOAT类似 52.36 DOUBLE FLOAT8 REAL 用于存储带二进制精度的浮点数,但它不能由用户指定使用的精度 52.3 FLOAT FLOAT4 DOUBLE PRECISION 用于存储指明双精度的浮点数 52.3 DOUBLE FLOAT8 位串 BIT 用于存储整数数据 1、0 或 NULL 1、0 或 NULL TINYINT(1 0 NULL) BOOLEAN(true false NULL) 日期时间 DATE 用于存储年、月、日信息 1999-10-01'、'1999/10/01'或'1999.10.01' DATE TIMESTAMP TIME 用于存储时、分、秒信息 '09:10:21'或'9:10:21' 不支持(String) TIME TIMESTAMP 用于存储年、月、日、时、分、秒信息 2002-12-12 09:10:21','2002-12-12 9:10:21' '2002/12/12 09:10:21' 或'2002.12.12 09:10:21' TIMESTAMP TIMESTAMP TIME WITH TIME ZONE 用于存储一个带时区的 TIME 值,其定义是在 TIME 类型的后面加上时区信息 '09:10:21 +8:00', '09:10:21+8:00'或'9:10:21+8:00' 不支持(String) TIME WITH TIME ZONE TIMESTAMP WITH TIME ZONE 用于存储一个带时区的 TIMESTAMP 值,其定义是TIMESTAMP类型的后面加上时区信息 2002-12-12 09:10:21 +8:00','2002-12-12 9:10:21 +8:00' '2002/12/12 09:10:21 +8:00'或'2002.12.12 09:10:21 +8:00' TIMESTAMP TIMESTAMP WITH TIME ZONE TIMESTAMP WITH LOCAL TIME ZONE 用于存储一个本地时区的 TIMESTAMP 值,能够将标准时区类型 TIMESTAMP WITH TIME ZONE 类型转化为本地时区类型 2002-12-12 09:10:21 +8:00','2002-12-12 9:10:21 +8:00' '2002/12/12 09:10:21 +8:00'或'2002.12.12 09:10:21 +8:00' 不支持(String) 不支持(TEXT) DATETIME WITH TIME ZONE 同TIMESTAMP WITH TIME ZONE 2002-12-12 09:10:21 +8:00','2002-12-12 9:10:21 +8:00' '2002/12/12 09:10:21 +8:00'或'2002.12.12 09:10:21 +8:00' TIMESTAMP TIMESTAMP WITH TIME ZONE INTERVAL YEAR 描述一个若干年的间隔,引导精度规定了年的取值范围 INTERVAL '0015' YEAR 不支持(String) 不支持(VARCHAR) INTERVAL YEAR TO MONTH 描述一个若干年若干月的间隔,引导精度规定了年的取值范围 INTERVAL '0015-08' YEAR TO MONTH 不支持(String) 不支持(VARCHAR) INTERVAL MONTH 描述一个若干月的间隔,引导精度规定了月的取值范围 INTERVAL '0015' MONTH 不支持(String) 不支持(VARCHAR) INTERVAL DAY 描述一个若干日的间隔,引导精度规定了日的取值范围 INTERVAL '150' DAY 不支持(String) 不支持(VARCHAR) INTERVAL DAY TO HOUR 描述一个若干日若干小时的间隔,引导精度规定了日的取值范围 INTERVAL '9 23' DAY TO HOUR 不支持(String) 不支持(VARCHAR) INTERVAL DAY TO MINUTE 描述一个若干日若干小时若干分钟的间隔,引导精度规定了日的取值范围 INTERVAL '09 23:12' DAY TO MINUTE 不支持(String) 不支持(VARCHAR) INTERVAL DAY TO SECOND 描述一个若干日若干小时若干分钟若干秒的间隔,引导精度规定了日的取值范围 INTERVAL '09 23:12:01.1' DAY TO SECOND 不支持(String) 不支持(VARCHAR) INTERVAL HOUR 描述一个若干小时的间隔,引导精度规定了小时的取值范围 INTERVAL '150' HOUR 不支持(String) 不支持(VARCHAR) INTERVAL HOUR TO MINUTE 描述一个若干小时若干分钟的间隔,引导精度规定了小时的取值范围 INTERVAL '23:12' HOUR TO MINUTE 不支持(String) 不支持(VARCHAR) INTERVAL HOUR TO SECOND 描述一个若干小时若干分钟若干秒的间隔,引导精度规定了小时的取值范围 INTERVAL '23:12:01.1' HOUR TO SECOND 不支持(String) 不支持(VARCHAR) INTERVAL MINUTE 描述一个若干分钟的间隔,引导精度规定了分钟的取值范围 INTERVAL '150' MINUTE 不支持(String) 不支持(VARCHAR) INTERVAL MINUTE TO SECOND 描述一个若干分钟若干秒的间隔,引导精度规定了分钟的 取值范围 INTERVAL '12:01.1' MINUTE TO SECOND 不支持(String) 不支持(VARCHAR) INTERVAL SECOND 描述一个若干秒的间隔,引导精度规定了秒整数部分的 取值范围 INTERVAL '51.1' SECOND 不支持(String) 不支持(VARCHAR) 多媒体 IMAGE IMAGE 用于指明多媒体信息中的图像类型。 图像由不定长的像素点阵组成,长度最大为 2G-1 字节。该类型除了存储图像数据之外,还可用于存储任何其它二进制数据。 0x2A3B4058 (二进制数据) 不支持 不支持 LONGVARBINARY 与IMAGE相同 0x2A3B4059 (二进制数据) 不支持 不支持 TEXT 用于存储长字符串类型,其字符串的长度 最大为 2G-1,存储长的文本串 0x5236(二进制数据) 不支持 不支持 LONGVARCHAR 与 TEXT 相似 0x5236(二进制数据) 不支持 不支持 BLOB 用于存储变长的二进制大对象,长度最大为2G-1字节 0x5236(二进制数据) 不支持 不支持 CLOB 用于存储变长的二进制大对象,长度最大为2G-1字节 0x5236(二进制数据) 不支持 不支持 BFILE 用于指明存储在操作系统中的二进制文件, 文件存储在操作系统而非数 据库中,仅能进行只读访问。 - 不支持 不支持
  • Elasticsearch/云搜索服务(CSS)数据库迁移时支持的数据类型 源端为Elasticsearch/云搜索服务(CSS)数据库时,支持的数据类型如下: 表10 Elasticsearch/云搜索服务(CSS)数据库作为源端时支持的数据类型 类别 类型 简要释义 存储格式示例 MySQL 字符 keyword 用于存储字符串 “keyword” String text 用于存储长字符串类型,其字符串的长度最大为 2G-1,存储长的文本串。 “long string” TEXT string 用于存储长字符串类型,其字符串的长度最大为 2G-1,存储长的文本串。 “a string” String 整数 short 用于存储16位有符号整数,取值范围为-32768至32767 32765 smallInt integer 用于存储32位有符号整数,取值范围为-231至231-1 3276566 int long 用于存储64位有符号整数,取值范围为-263至263-1 3276566666 BIGINT 数值 double 64位双精度IEEE 754浮点类型。 21.333 double float 32位单精度IEEE 754浮点类型 。 21.333 double 布尔类型 boolean 存储在1个字节中,可以取值为 1、0 或 NULL。 1 Boolean 对象 object 扁平化存储对象的字符串。 {"users.name":["John","Smith"], users.age":[26,28], "users.sex":[1,2]} TEXT 嵌套 nested 嵌套存储对象的字符串。 {"users.name" : "John" , "users.age" : 26, "users.sex" : 1} { "users.name" : "Smith", "users.age" : 28, "users.sex" : 2} TEXT 日期 date 日期格式的字符串 “2018-01-13”或“2018-01-13 12:10:30” DATE或timeStamp 特殊 ip Ip地址格式的字符串。 “192.168.127.100” String 数组 string_array 全部是字符串的数组 [“str”,“str”] TEXT short_array 全部是16位整数的数组 [1,1,1] TEXT integer_array 全部是32位整数的数组 [1,1,1] TEXT long_array 全部是64位整数的数组 [1,1,1] TEXT float_array 全部是32位浮点数的数组 [1.0,1.0,1.0] TEXT double_array 全部是64位浮点数的数组 [1.0,1.0,1.0] TEXT 范围 completion 自动补全的字符串 “string” TEXT
  • DLI数据库迁移时支持的数据类型 源端为DLI数据库时,支持的数据类型如下: 表9 DLI数据库作为源端时支持的数据类型 类别 类型 简要释义 字符 CHAR 用于存储指定定长字符串。 VARCHAR 与CHAR相同。 STRING 用于存储长字符串类型,其字符串的长度最大为 2G-1,存储长的文本串。 数值 BIGINT 用于存储有符号整数,精度为19,标度为0。 TINYINT 用于存储有符号整数,精度为3,标度为0。 SMALLINT SMALLINT类型的数据占用了两个字节的存储空间,其中一个二进制位表示整数值的正负号,其它15个二进制位表示长度和大小,可以表示-2的15次方~2的15次方-1范围内的所有整数。 INT 用于存储有符号整数,精度为10,标度为0。 DECIMAL 带固定精度和小数位数的数值数据类型。 FLOAT 用于存储带二进制精度的浮点数。 DOUBLE 用于存储指明双精度的浮点数。 日期时间 DATE 用于存储年、月、日信息。 TIMESTAMP 用于存储年、月、日、时、分、秒信息。 布尔类型 BOOLEAN 存储在1个字节中,可以取值为 1、0 或 NULL。
  • DWS数据库迁移时支持的数据类型 源端为DWS数据库时,支持的数据类型如下: 表6 DWS数据库作为源端时支持的数据类型 类别 类型 简要释义 字符 char 定长字符串,存储右空格填充到指定的长度。 varchar 变长字符串,不会用空格将字段或变量填充至最大长度。 数值 double 用于存储指明双精度的浮点数 decimal(p,s) 精度p表示为值存储的有效位数,刻度s表示可以在小数点后存储的位数。p最大位数是1000。 numeric 用于存储零、正负定点数。 real 与double相同。 int int存储在4个字节中,其中一个二进制位表示符号位,其它31个二进制位表示长度和大小,可以表示-2的31次方~2的31次方-1范围内的所有整数。 bigint bigint存储在8个字节中,其中一个二进制位表示符号位,其它63个二进制位表示长度和大小,可以表示-2的63次方~2的63次方-1范围内的所有整数。 smallint smallint类型的数据占用了两个字节的存储空间,其中一个二进制位表示整数值的正负号,其它15个二进制位表示长度和大小,可以表示-2的15次方~2的15次方-1范围内的所有整数。 tinyint tinyint类型的数据占用了一个字节的存储空间,可以表示0~255范围内的所有整数。 日期时间 date 存储日期数据。 timestamp 存储日期和时间数据,无时区。 time 只用于一日内时间,无时区。 位串类型 bit 定长位串,例如: b'000101'。 布尔类型 boolean 存储在1个字节中,可以取值为 1、0 或 NULL。 文本类型 text 变长文本,无长度限制。
  • 神通(ST)数据库迁移时支持的数据类型 源端为神通(ST)数据库,目的端为MRS Hive、MRS Hudi时,支持的数据类型如下: 表7 神通(ST)数据库作为源端时支持的数据类型 类别 类型 简要释义 存储格式示例 MRS Hive MRS Hudi 字符 VARCHAR 用于存储指定定长字符串 ‘a’或‘aaaaa’ VARCHAR(765) STRING BPCHAR 用于存储指定变长字符串 ‘a’或‘aaaaa’ VARCHAR(765) STRING 数值 NUMERIC 用于存储零、正负定点数 52.36 DECIMAL(10,0) DECIMAL(18,0) INT 用于存储零、正负定点数 5236 INT INT BIGINT 用于存储有符号整数,精度为19,标度为0 5236 BIGINT BIGINT TINYINT 用于存储有符号整数,精度为3,标度为0 100 SMALLINT INT BINARY 用于存储定长二进制数据 0x2A3B4058 不支持 FLOAT VARBINARY 用于存储可变长二进制数据 0x2A3B4058 不支持 BINARY FLOAT 用于存储带二进制精度的浮点数 52.36 FLOAT FLOAT DOUBLE 用于存储指明双精度的浮点数 52.3 DOUBLE DOUBLE 日期时间 DATE 用于存储年、月、日信息 1999-10-01'、'1999/10/01'或'1999.10.01' DATE DATE TIME 用于存储时、分、秒信息 '09:10:21'或'9:10:21' STRING STRING TIMESTAMP 用于存储年、月、日、时、分、秒信息 2002-12-12 09:10:21','2002-12-12 9:10:21' '2002/12/12 09:10:21' 或'2002.12.12 09:10:21' TIMESTAMP TIMESTAMP 多媒体 CLOB 用于存储变长的二进制大对象,长度最大为2G-1字节 0x5236(二进制数据) STRING STRING BLOB 用于存储变长的二进制大对象,长度最大为2G-1字节 0x5236(二进制数据) 不支持 BINARY 布尔类型 BOOLEAN 存储在1个字节中,可以取值为 1、0 或 NULL。 1 BOOLEAN BOOLEAN
  • SAP HANA数据库迁移时支持的数据类型 源端为SAP HANA数据库时,支持的数据类型如下: 表8 SAP HANA数据库作为源端时支持的数据类型 类别 类型 简要释义 字符 VARCHAR 用于存储指定定长字符串。 NVARCHAR 包含unicode格式数据的变长字符串。 TEXT 用于存储长字符串类型,其字符串的长度最大为 2G-1,存储长的文本串。 数值 BIGINT 用于存储有符号整数,精度为19,标度为0。 TINYINT 用于存储有符号整数,精度为3,标度为0。 SMALLINT SMALLINT类型的数据占用了两个字节的存储空间,其中一个二进制位表示整数值的正负号,其它15个二进制位表示长度和大小,可以表示-2的15次方~2的15次方-1范围内的所有整数。 REAL 可以存储正的或者负的十进制数值。 DECIMAL 带固定精度和小数位数的数值数据类型。 FLOAT 用于存储带二进制精度的浮点数。 DOUBLE 用于存储指明双精度的浮点数。 日期时间 DATE 用于存储年、月、日信息。 TIME 用于存储时、分、秒信息。 TIMESTAMP 用于存储年、月、日、时、分、秒信息。 多媒体 CLOB 用于存储变长的二进制大对象,长度最大为2G-1字节。 NCLOB 这种类型能够存储最多4GB的数据。当字符集发生转换时,这种类型会受到影响。 布尔类型 BOOLEAN 存储在1个字节中,可以取值为 1、0 或 NULL。
  • PostgreSQL数据库迁移时支持的数据类型 源端为PostgreSQL数据库,目的端为Hive、DWS、DLI时,支持的数据类型如下: 表5 PostgreSQL数据库作为源端时支持的数据类型 类别 类型 简要释义 Hive DWS DLI 字符 char 定长字符串,存储右空格填充到指定的长度。 CHAR CHAR 不支持(String) varchar 变长字符串,不会用空格将字段或变量填充至最大长度。 CARCHAR CARCHAR 不支持(String) 数值 smallint 拓展名 int2,存储在2个字节中,它允许的范围是从-32768到32767。 SMALLINT SMALLINT SMALLINT int 拓展名 int4,存储在4个字节中,它允许的范围是从-2147483648到2147483647。 INTEGER INT INT bigint 拓展名 int8,存储在8个字节中,允许范围为-9223372036854775808到9223372036854775807。 BIGINT BIGINT BIGINT decimal(p,s) 精度p表示为值存储的有效位数,刻度s表示可以在小数点后存储的位数。p最大位数是1000。 DECIMAL(P,S) DECIMAL(P,S) DECIMAL(P,S) float 4字节或8字节存储。float(n):n取值在1-24内,精度有效位数为6 位数,长度4 个字节,是单精度,n取值在25-53内,精度有效位数为15 位数,长度8 字节,是双精度。 FLOAT/DOUBLE FLOAT/DOUBLE FLOAT/DOUBLE smallserial 序列数据类型,以smallint格式存储。 SMALLINT SMALLINT SMALLINT serial 序列数据类型,以int格式存储。 INTEGER INT INT bigserial 序列数据类型,以bigint格式存储。 BIGINT BIGINT BIGINT 日期时间 date 存储日期数据 DATE DATE DATE timestamp 存储日期和时间数据,无时区 TIMESTAMP TIMESTAMP 不支持(String) timestamptz 存储日期和时间数据,有时区 TIMESTAMP TIMESTAMPZ 不支持(String) time 只用于一日内时间,无时区 不支持(String) TIME 不支持(String) timez 只用于一日内时间,有时区 不支持(String) TIMEZ 不支持(String) interval 时间间隔 不支持(String) 不支持(String) 不支持(String) 位串类型 bit 定长位串,例如: b'000101' 不支持(String) 不支持(String) 不支持(String) varbit 可变长位串,例如: b'101' 不支持(String) 不支持(String) 不支持(String) 货币类型 money 存储在8个字节中,它允许的范围是从-922337203685477.5808到922337203685477.5807。 DOUBLE MONEY DECIMAL(P,S) 布尔类型 boolean 存储在1个字节中,可以取值为 1、0 或 NULL。 BOOLEAN BOOLEAN BOOLEAN 文本类型 text 变长文本,无长度限制。 不支持(String) 不支持(String) 不支持(String)
  • SQL Server数据库迁移时支持的数据类型 源端为SQL Server数据库,目的端为Hive、DWS、Oracle时,支持的数据类型如下: 表4 SQL Server数据库作为源端时支持的数据类型 类别 类型 简要释义 Hive DWS Oracle 字符串数据类型 char 定长字符串,会用空格填充来达到最大长度。 CHAR CHAR CHAR nchar 包含unicode格式数据的定长字符串。 CHAR CHAR CHAR varchar 可变长度的字符串是以长度为1到255之间字符数(高版本的MySQL超过255); 例如: VARCHAR(25);创建VARCHAR类型字段时,必须定义长度。 VARCHAR VARCHAR VARCHAR nvarchar 与varchar类似,存储可变长度Unicode字符数据。 VARCHAR VARCHAR VARCHAR 数值数据类型 int int存储在4个字节中,其中一个二进制位表示符号位,其它31个二进制位表示长度和大小,可以表示-2的31次方~2的31次方-1范围内的所有整数。 INT INTEGER INT bigint bigint存储在8个字节中,其中一个二进制位表示符号位,其它63个二进制位表示长度和大小,可以表示-2的63次方~2的63次方-1范围内的所有整数。 BIGINT BIGINT NUMBER smallint smallint类型的数据占用了两个字节的存储空间,其中一个二进制位表示整数值的正负号,其它15个二进制位表示长度和大小,可以表示-2的15次方~2的15次方-1范围内的所有整数。 SMALLINT SMALLINT NUMBER tinyint tinyint类型的数据占用了一个字节的存储空间,可以表示0~255范围内的所有整数。 TINYINT TINYINT NUMBER real 可以存储正的或者负的十进制数值。 DOUBLE FLOAT4 NUMBER float 其中为用于存储float数值尾数的位数(以科学计数法表示),因此可以确定精度和存储大小。 FLOAT FLOAT8 binary_float decimal 带固定精度和小数位数的数值数据类型。 DECIMAL NUMERIC NUMBER numeric 用于存储零、正负定点数 DECIMAL NUMERIC NUMBER 日期时间数据类型 date 存储用字符串表示的日期数据。 DATE TIMESTAMP DATE time 以字符串形式记录一天的某个时间。 不支持(String) TIME 不支持 datetime 用于存储时间和日期数据。 TIMESTAMP TIMESTAMP 不支持 datetime2 datetime的扩展类型,其数据范围更大,默认的最小精度最高,并具有可选的用户定义的精度。 TIMESTAMP TIMESTAMP 不支持 smalldatetime smalldatetime类型与datetime类型相似,只是其存储范围是从1900年1月1日到2079年6月6日,当日期时间精度较小时,可以使用smalldatetime,该类型数据占用4个字节的存储空间。 TIMESTAMP TIMESTAMP 不支持 datetimeoffset 用于定义一个采用24小时制与日期相组合并可识别时区的时间。 不支持(String) TIMESTAMP 不支持 多媒体数据类型 (二进制) text 用于存储文本数据。 不支持(String) 不支持(String) 不支持 netxt 与text类型作用相同,为长度可变的非Unicode数据。 不支持(String) 不支持(String) 不支持 image 长度可变的二进制数据,用于存储照片、目录图片或者图画。 不支持(String) 不支持(String) 不支持 binary 长度为n个字节的固定长度二进制数据,其中n是从1~8000的值。 不支持(String) 不支持(String) 不支持 varbinary 可变长度二进制数据。 不支持(String) 不支持(String) 不支持 货币数据类型 money 用于存储货币值 不支持(String) 不支持(String) 不支持 smallmoney 与money类型相似,输入数据时在前面加上一个货币符号,如人民币为¥或其它定义的货币符号。 不支持(String) 不支持(String) 不支持 位数据类型 bit 位数据类型,只取0或1为值,长度1字节。bit值经常当作逻辑值用于判断true(1)或false(0),输入非0值时系统将其替换为1。 不支持 不支持 不支持 其他数据类型 rowversion 每个数据都有一个计数器,当对数据库中包含rowversion列的表执行插入或者更新操作时,该计数器数值就会增加。 不支持 不支持 不支持 uniqueidentifier 16字节的GUID(Globally Unique Identifier,全球唯一标识符),是Sql Server根据网络适配器地址和主机CPU时钟产生的唯一号码,其中,每个为都是0~9或a~f范围内的十六进制数字。 不支持 不支持 不支持 cursor 游标数据类型。 不支持 不支持 不支持 sql_variant 用于存储除文本,图形数据和timestamp数据外的其它任何合法的Sql Server数据,可以方便Sql Server的开发工作。 不支持 不支持 不支持 table 用于存储对表或视图处理后的结果集。 不支持 不支持 不支持 xml 存储xml数据的数据类型。可以在列中或者xml类型的变量中存储xml实例。存储的xml数据类型表示实例大小不能超过2GB。 不支持 不支持 不支持
  • Oracle数据库迁移时支持的数据类型 源端为Oracle数据库,目的端为Hive、DWS时,支持的数据类型如下: 表3 Oracle数据库作为源端时支持的数据类型 类别 类型 简要释义 Hive DWS 字符串 char 定长字符串,会用空格填充来达到最大长度。 CHAR CHAR nchar 包含unicode格式数据的定长字符串。 CHAR CHAR varchar2 是VARCHAR的同义词。这是一个变长字符串,与CHAR类型不同,它不会用空格将字段或变量填充至最大长度。 VARCHAR VARCHAR nvarchar2 包含unicode格式数据的变长字符串。 VARCHAR VARCHAR 数值 number 能存储精度最多高达38位的数字 DECIMAL NUMERIC binary_float 2位单精度浮点数 FLOAT FLOAT8 binary_double 64位双精度浮点数 DOUBLE FLOAT8 long 能存储最多2GB的字符数据 不支持 不支持 日期时间 date 7字节的定宽日期/时间数据类型,其中包含7个属性:世纪、世纪中的哪一年、月份、月中的哪一天、小时、分钟、秒。 DATE TIMESTAMP timestamp 7字节或11字节的定宽日期/时间数据类型,它包含小数秒 TIMESTAMP TIMESTAMP timestamp with time zone 3字节的timestamp,提供了时区支持。 TIMESTAMP TIME WITH TIME ZONE timestamp with local time zone 7字节或11字节的定宽日期/时间数据类型,在数据的插入和读取时会发生时区转换 TIMESTAMP 不支持(TEXT) interval year to month 5字节的定宽数据类型,用于存储一个时段。 不支持 不支持(TEXT) interval day to second 11字节的定宽数据类型,用于存储一个时段。将时段存储为天/小时/分钟/秒数,还可以有9位小数秒。 不支持 不支持(TEXT) 多媒体(二进制) raw 一种变长二进制数据类型,采用这种数据类型存储的数据不会发生字符集转换。 不支持 不支持 long raw 能存储多达2GB的二进制信息 不支持 不支持 blob 能够存储最多4GB的数据 不支持 不支持 clob 在Oracle 10g及以后的版本中允许存储最多(4GB)×(数据库块大小)字节的数据。CLOB包含要进行字符集转换的信息。这种数据类型很适合存储纯文本信息。 String 不支持 nclob 这种类型能够存储最多4GB的数据。当字符集发生转换时,这种类型会受到影响。 不支持 不支持 bfile 可以在数据库列中存储一个oracle目录对象和一个文件名,用户可以通过它来读取这个文件。 不支持 不支持 其他类型 rowid 实际上是数据库表中行的地址,它有10字节长。 不支持 不支持 urowid 是一个通用的rowid,没有固定的rowid的表。 不支持 不支持
  • MySQL数据库迁移时支持的数据类型 源端为MySQL数据库,目的端为Hive、DWS时,支持的数据类型如下: 表2 开源MySQL数据库作为源端时支持的数据类型 类别 类型 简要释义 存储格式示例 Hive DWS 字符串 CHAR(M) 固定长度的字符串是以长度为1到255之间个字符长度(例如:CHAR(5)),存储右空格填充到指定的长度。 限定长度不是必需的,它会默认为1。 ‘a’或‘aaaaa’ CHAR CHAR VARCHAR(M) 可变长度的字符串是以长度为1到255之间字符数(高版本的MySQL超过255); 例如: VARCHAR(25). 创建VARCHAR类型字段时,必须定义长度。 ‘a’或‘aaaaa’ VARCHAR VARCHAR 数值 DECIMAL(M,D) 非压缩浮点数不能是无符号的。在解包小数,每个小数对应于一个字节。 定义显示长度(M)和小数(D)的数量是必需的。 NUMERIC是DECIMAL的同义词。 52.36 DECIMAL D为0时对应BIGINT D不为0时对应NUMBERIC NUMBERIC 与 DECIMAL 相同 - DECIMAL NUMBERIC INTEGER 一个正常大小的整数,可以带符号。如果是有符号的,它允许的范围是从-2147483648到2147483647。 如果是无符号,允许的范围是从0到4294967295。 可以指定多达11位的宽度。 5236 INT INTEGER INTEGER UNSIGNED INTEGER 的无符号形式 - BIGINT INTEGER INT 与INTEGER相同 5236 INT INTEGER INT UNSIGNED 与INTEGER UNSIGNED相同 - BIGINT INTEGER BIGINT 一个大的整数,可以带符号。如果有符号,允许范围为-9223372036854775808到9223372036854775807。如果无符号,允许的范围是从0到18446744073709551615. 可以指定最多20位的宽度。 5236 BIGINT BIGINT BIGINT UNSIGNED BIGINT的无符号形式 - BIGINT BIGINT MEDIUMINT 一个中等大小的整数,可以带符号。如果有符号,允许范围为-8388608至8388607。 如果无符号,允许的范围是从0到16777215,可以指定最多9位的宽度。 -128、127 INT INTEGER MEDIUMINT UNSIGNED MEDIUMINT的无符号形式 - BIGINT INTEGER TINYINT 一个非常小的整数,可以带符号。如果是有符号,它允许的范围是从-128到127。 如果是无符号,允许的范围是从0到255,可以指定多达4位数的宽度。 100 TINYINT SMALLINT TINYINT UNSIGNED TINYINT的无符号形式 - TINYINT SMALLINT BOOL MySQL的bool实际上就是tinyint(1) -128、127 SMALLINT BYTEA SMALLINT 一个小的整数,可以带符号。如果有符号,允许范围为-32768至32767。 如果无符号,允许的范围是从0到65535,可以指定最多5位的宽度。 9999 SMALLINT SMALLINT SMALLINT UNSIGNED SMALLINT的无符号形式 - INT SMALLINT REAL 同DOUBLE - DOUBLE - FLOAT(M,D) 不能使用无符号的浮点数字。可以定义显示长度(M)和小数位数(D)。这不是必需的,并且默认为10,2。其中2是小数的位数,10是数字(包括小数)的总数。小数精度可以到24个浮点。 52.36 FLOAT FLOAT4 DOUBLE(M,D) 不能使用无符号的双精度浮点数。可以定义显示长度(M)和小数位数(D)。 这不是必需的, 默认为16,4,其中4是小数的位数。小数精度可以达到53位的DOUBLE。 REAL是DOUBLE同义词。 52.36 DOUBLE FLOAT8 DOUBLE PRECISION 与DOUBLE相似 52.3 DOUBLE FLOAT8 位 BIT(M) 存储位值的BIT类型。BIT(M)可以存储多达M位的值,M的范围在1到64之间。 B'1111100' B'1100' TINYINT BYTEA 日期时间 DATE 以YYYY-MM-DD格式的日期,在1000-01-01和9999-12-31之间。 例如,1973年12月30日将被存储为1973-12-30。 1999-10-01 DATE TIMESTAMP TIME 用于存储时、分、秒信息 '09:10:21'或'9:10:21' 不支持(String) TIME DATETIME 日期和时间组合以YYYY-MM-DD HH:MM:SS格式,在1000-01-01 00:00:00 到9999-12-31 23:59:59之间。例如,1973年12月30日下午3:30,会被存储为1973-12-30 15:30:00。 '1973-12-30 15:30:00' TIMESTAMP TIMESTAMP TIMESTAMP 1970年1月1日午夜之间的时间戳,到2037的某个时候。这看起来像前面的DATETIME格式,无需只是数字之间的连字符; 1973年12月30日下午3点30分将被存储为19731230153000(YYYYMMDDHHMMSS)。 19731230153000 TIMESTAMP TIMESTAMP YEAR(M) 以2位或4位数字格式来存储年份。如果长度指定为2(例如YEAR(2)),年份就可以为1970至2069(70〜69)。如果长度指定为4,年份范围是1901-2155,默认长度为4。 2000 不支持(String) 不支持 多媒体(二进制) BINARY(M) 字节数为M,允许长度为0-M的变长二进制字符串,字节数为值得长度加1 0x2A3B4058 (二进制数据) 不支持 BYTEA VARBINARY(M) 字节数为M,允许长度为0-M的定长二进制字符串 0x2A3B4059 (二进制数据) 不支持 BYTEA TEXT 字段的最大长度是65535个字符。 TEXT是“二进制大对象”,并用来存储大的二进制数据,如图像或其他类型的文件。 0x5236(二进制数据) 不支持 不支持 TINYTEXT 0-255字节短文本二进制字符串 - - 不支持 MEDIUMTEXT 0-167772154字节中等长度文本二进制字符串 - - 不支持 LONGTEXT 0-4294967295字节极大长度文本二进制字符串 - - 不支持 BLOB 字段的最大长度是65535个字符。 BLOB是“二进制大对象”,并用来存储大的二进制数据,如图像或其他类型的文件。BLOB大小写敏感。 0x5236(二进制数据) 不支持 不支持 TINYBLOB 0-255字节短文本二进制字符串 - 不支持 不支持 MEDIUMBLOB 0-167772154字节中等长度文本二进制字符串 - 不支持 不支持 LONGBLOB 0-4294967295字节极大长度文本二进制字符串 0x5236(二进制数据) 不支持 不支持 特殊类型 SET SET是一个字符串对象,可以有零或多个值,其值来自表创建时规定的允许的一列值。指定包括多个SET成员的SET列值时各成员之间用逗号(‘,’)间隔开。这样SET成员值本身不能包含逗号。 - - 不支持 JSON - - 不支持 不支持(TEXT) ENUM 当定义一个ENUM,要创建它的值的列表,这些是必须用于选择的项(也可以是NULL)。例如,如果想要字段包含“A”或“B”或“C”,那么可以定义为ENUM为 ENUM(“A”,“B”,“C”)也只有这些值(或NULL)才能用来填充这个字段。 - 不支持 不支持
  • 配置FTP/SFTP源端参数 作业中源连接为FTP/SFTP连接时,源端作业参数如表1所示。 高级属性里的参数为可选参数,默认隐藏,单击界面上的“显示高级属性”后显示。 表1 FTP/SFTP作为源端时的作业参数 参数类型 参数名 说明 取值样例 基本参数 源目录或文件 待迁移数据的目录或单个文件路径。文件路径支持输入多个文件(最多50个),默认以“|”分隔,也可以自定义文件分隔符,具体请参见文件列表迁移。 待迁移数据的目录,将迁移目录下的所有文件(包括所有嵌套子目录及其子文件)。 该参数支持配置为时间宏变量,且一个路径名中可以有多个宏定义变量。使用时间宏变量和定时任务配合,可以实现定期同步新增数据,详细说明请参见使用时间宏变量完成增量同步。 说明: 如果配置了时间宏变量,通过DataArts Studio数据开发调度CDM迁移作业时,系统会将时间宏变量替换为(数据开发作业计划启动时间-偏移量),而不是(CDM作业实际启动时间-偏移量)。 /ftp/a.csv|/ftp/b.txt 文件格式 指CDM以哪种格式解析数据,可选择以下格式: CSV格式:以CSV格式解析源文件,用于迁移文件到数据表的场景。 二进制格式:选择“二进制格式”时不解析文件内容直接传输,不要求文件格式必须为二进制。适用于文件到文件的原样复制。 JSON格式:以JSON格式解析源文件,一般都是用于迁移文件到数据表的场景。 说明: 当目的端为OBS数据源时,仅支持配置二进制格式。 CSV格式 JSON类型 当“文件格式”选择为“JSON格式”时,才有该参数。JSON文件中存储的JSON对象的类型,可以选择“JSON对象”或“JSON数组”。 JSON对象 记录节点 当“文件格式”选择为“JSON格式”并且“JSON类型”为“JSON对象”时,才有该参数。对该JSON节点下的数据进行解析,如果该节点对应的数据为JSON数组,那么系统会以同一模式从该数组中提取数据。多层嵌套的JSON节点以字符“.”分割。 data.list 高级属性 使用rfc4180解析器 当“文件格式”选择为“CSV格式”时,才有该参数。是否使用rfc4180解析器解析CSV文件。 否 换行符· 文件中的换行符,默认自动识别“\n”、“\r”或“\r\n”。当“文件格式”选择为“CSV格式”时,才有该参数。 \n 字段分隔符 文件中的字段分隔符,使用Tab键作为分隔符请输入“\t”。当“文件格式”选择为“CSV格式”时,才有该参数。 , 使用包围符 选择“是”时,包围符内的字段分隔符会被视为字符串值的一部分,目前CDM默认的包围符为:"。 否 使用转义符 选择“是”时,CSV数据行中的\作为转义符使用。 选择“否”时,CSV中的\作为数据不会进行转义。CSV只支持\作为转义符。 是 使用正则表达式分隔字段 选择是否使用正则表达式分隔字段,当选择“是”时,“字段分隔符”参数无效。当“文件格式”选择为“CSV格式”时,才有该参数。 是 正则表达式 当“使用正则表达式分隔字段”选择为“是”时,才有该参数。 分隔字段的正则表达式,正则表达式写法请参考正则表达式分隔半结构化文本。 ^(\d.*\d) (\w*) \[(.*)\] ([\w\.]*) (\w.*).* 首行为标题行 “文件格式”选择“CSV格式”时才有该参数。在迁移CSV文件到表时,CDM默认是全部写入,如果该参数选择“是”,CDM会将CSV文件的前N行数据作为标题行,不写入目的端的表。 是 编码类型 文件编码类型,例如:“UTF-8”或“GBK”。只有文本文件可以设置编码类型,当“文件格式”选择为“二进制格式”时,该参数值无效。 UTF-8 压缩格式 选择对应压缩格式的源文件: 无:表示传输所有格式的文件。 GZIP:表示只传输GZIP格式的文件。 ZIP:表示只传输ZIP格式的文件。 TAR.GZ:表示只传输TAR.GZ格式的文件。 无 压缩文件后缀 压缩格式非无时,显示该参数。 该参数需要解压缩的文件后缀名。当一批文件中以该值为后缀时,才会执行解压缩操作,否则保持原样传输。当输入*或为空时,所有文件都会被解压。 * 启动作业标识文件 选择是否开启作业标识文件的功能。当源端路径下存在启动作业的标识文件时才启动作业,否则会挂起等待一段时间,等待时长在下方“等待时间”中配置。 是 文件分隔符 “源目录或文件”参数中如果输入的是多个文件路径,CDM使用这里配置的文件分隔符来区分各个文件,默认为|。 | 标识文件名 选择开启作业标识文件的功能时,需要指定启动作业的标识文件名。指定文件后,只有在源端路径下存在该文件的情况下才会运行任务。该文件本身不会被迁移。 ok.txt 等待时间 选择开启作业标识文件的功能时,如果源路径下不存在启动作业的标识文件,作业挂机等待的时长,当超时后任务会失败。 等待时间设置为0时,当源端路径下不存在标识文件,任务会立即失败。 单位:秒。 10 过滤类型 满足过滤条件的路径或文件会被传输,该参数有“无”、“通配符”和“正则表达式”三种选择。具体使用方法可参见文件增量迁移。 无 目录过滤器 “过滤类型”选择“通配符”和“正则表达式”时,符合过滤器规则的目录,允许进行迁移。支持配置多个路径,中间使用“,”分隔。 说明: 如果配置了时间宏变量,通过DataArts Studio数据开发调度CDM迁移作业时,系统会将时间宏变量替换为(数据开发作业计划启动时间-偏移量),而不是(CDM作业实际启动时间-偏移量)。 *input,*out 文件过滤器 “过滤类型”选择“通配符”和“正则表达式”时,符合过滤器规则的文件,允许进行迁移。支持配置多个文件,中间使用“,”分隔。 说明: 如果配置了时间宏变量,通过DataArts Studio数据开发调度CDM迁移作业时,系统会将时间宏变量替换为(数据开发作业计划启动时间-偏移量),而不是(CDM作业实际启动时间-偏移量)。 *.csv 时间过滤 选择“是”时,可以根据文件的修改时间,选择性的传输文件。 是 起始时间 “时间过滤”选择“是”时,可以指定一个时间值,当文件的修改时间大于等于该时间才会被传输,输入的时间格式需为“yyyy-MM-dd HH:mm:ss”。 该参数支持配置为时间宏变量,例如${timestamp(dateformat(yyyy-MM-dd HH:mm:ss,-90,DAY))}表示:只迁移最近90天内的文件。 说明: 如果配置了时间宏变量,通过DataArts Studio数据开发调度CDM迁移作业时,系统会将时间宏变量替换为(数据开发作业计划启动时间-偏移量),而不是(CDM作业实际启动时间-偏移量)。 2019-07-01 00:00:00 终止时间 “时间过滤”选择“是”时,可以指定一个时间值,当文件的修改时间小于该时间才会被传输,输入的时间格式需为“yyyy-MM-dd HH:mm:ss”。 该参数支持配置为时间宏变量,例如${timestamp(dateformat(yyyy-MM-dd HH:mm:ss))}表示:只迁移修改时间为当前时间以前的文件。 说明: 如果配置了时间宏变量,通过DataArts Studio数据开发调度CDM迁移作业时,系统会将时间宏变量替换为(数据开发作业计划启动时间-偏移量),而不是(CDM作业实际启动时间-偏移量)。 2019-07-30 00:00:00 忽略不存在原路径/文件 如果将其设为“是”,那么作业在源路径不存在的情况下也能成功执行。 否 标识文件类型 选择开启作业标识文件的功能时,该参数才显示。 MARK_DONE:只有在源端路径下存在标识文件的情况下才会执行迁移任务。 MARK_DOING:只有在源端路径下不存在标识文件的情况下才会执行迁移任务。 MARK_DOING 是否跳过空行 “文件格式”选择“CSV格式”时,该参数才显示。 如果某行数据为空,则跳过此行。 否 null值 “文件格式”选择“二进制格式”时,该参数才显示。 由于文本文件中无法用字符串定义null值,此配置项定义将何种字符串标识为null。 否 MD5文件名后缀 “文件格式”选择“二进制格式”时,该参数才显示。 校验CDM抽取的文件,是否与源文件一致,详细请参见MD5校验文件一致性。 .md5 父主题: 配置作业源端参数
  • 配置MRS Hudi目的端参数 作业中目的连接为MRS Hudi连接时,目的端作业参数如表1所示。 表1 MRS Hudi作为目的端时的作业参数 通用配置 配置项 配置说明 推荐配置 目的连接名称 选择已配置的MRS Hudi连接。 hudi_to_cdm 数据库名称 输入或选择写入数据的数据库名称。单击输入框后面的按钮可进入数据库选择界面。 dbadmin 表名 单击输入框后面的按钮可进入表的选择界面。 该参数支持配置为时间宏变量,且一个路径名中可以有多个宏定义变量。使用时间宏变量和定时任务配合,可以实现定期同步新增数据,详细说明请参见使用时间宏变量完成增量同步。 说明: 如果配置了时间宏变量,通过DataArts Studio数据开发调度CDM迁移作业时,系统会将时间宏变量替换为(数据开发作业计划启动时间-偏移量),而不是(CDM作业实际启动时间-偏移量)。 cdm 自动创表 是否自动创建Hudi表。 不自动创建:不自动建表。 不存在时创建:当目的端的数据库没有“表名”参数中指定的表时,CDM会自动创建该表。如果“表名”参数配置的表已存在,则不创建,数据写入到已存在的表中。 不自动创表 导入前清空数据 选择目的端表中数据的处理方式: 是:任务启动前会清除目标表中数据。 否:导入前不清空目标表中的数据,如果选“否”且表中有数据,则数据会追加到已有的表中。 否 全量模式写Hoodie 选择写Hoodie模式,默认选“是”表示全量模式,“否”表示微批模式。 全量模式为异步分片写入Hoodie,适用于一次全量写入场景。 微批模式为异步分批写入Hoodie,适用于对入库时间SLA要求较为严格的场景,以及对资源消耗较小,对MOR表存储类型在线进行压缩的场景。 说明: 运行-失败重试期间不允许修改此模式。 是 批次数据大小 “全量模式写Hoodie”设置为“否”时,使用微批模式呈现此参数。 用于设置单个批次写Hoodie的数据行数,默认100000行。 100000 使用入库时间字段 将一个字段标记为入库时间字段,自动建表时将此字段自动加到建表语句中,写入Hudi时将把此字段的值替换为当前时间,不自动建表时选择已经存在的入库时间字段。 是 入库时间字段名称 “使用入库时间字段”设置为“是”时,呈现此参数。 用于记录写入Hudi的时间。 说明: 对于已存在目的端表中带有入库时间字段的,可以直接使用已有的timestamp类型字段。 对于自动建表的场景,该字段会被拼接到建表语句中,类型为timestamp,该字段名称不能与源端的字段有重复(包括自定义字段)。 cdc_last_update_date Hudi建表配置 Location 存储在OBS或HDFS上数据库表的文件路径。 - Hudi表类型 Hudi表存储类型。 MOR表:数据先写入avro格式的日志文件,读取时合并到parquet文件。 COW表:数据直接写入parquet文件。 MOR Hudi表主键 对Hudi建表设置主键,多个值以逗号隔开。 - Hudi表生成器类 主键生成类型,实现org.apache.hudi.keygen.KeyGenerator从传入记录中提取键值。 - Hudi表预聚合键 对Hudi建表设置预聚合键,当两个记录拥有相同的主键时,保留precombine字段值较大的记录。 说明: 如果没有时间字段,可以设置和主键一样的字段,当遇到主键冲突时,保留最新的记录。 ts Hudi表分区字段 对Hudi建表设置分区字段,多个值以逗号隔开。 - Hudi表压缩策略(是否开启写入压缩) 在线进行压缩,仅对MOR表生效。 是 Hudi表清除策略(保留提交数) 清除时保留的提交数。 1 Hudi表归档策略(最小保留提交数) 归档时保留的最小提交数。 1 Hudi表归档策略(最大保留提交数) 归档时保留的最大提交数。 100 Hudi表配置 对Hudi建表设置自定义参数属性,此处填入的参数将会在options中生效。例如:主键、combineKey、索引。 - 父主题: 配置作业目的端参数
  • 文件格式问题解决方法 数据库的数据导出到CSV文件,由于数据中含有分隔符逗号,造成导出的CSV文件中数据混乱。 CDM提供了以下几种解决方法: 指定字段分隔符 使用数据库中不存在的字符,或者是极少见的不可打印字符来作为字段分隔符。例如:可以在目的端指定“字段分隔符”为“%01”,这样导出的字段分隔符就是“\u0001”,详情可见表1。 使用包围符 在目的端作业参数中开启“使用包围符”,这样数据库中如果字段包含了字段分隔符,在导出到CSV文件的时候,CDM会使用包围符将该字段括起来,使之作为一个字段的值写入CSV文件。 数据库的数据包含换行符 场景:使用CDM先将MySQL中的某张表(表的某个字段值中包含了换行符\n)导出到CSV格式的文件中,然后再使用CDM将导出的CSV文件导入到MRS HBase,发现导出的CSV文件中出现了数据被截断的情况。 解决方法:指定换行符。 在使用CDM将MySQL的表数据导出到CSV文件时,指定目的端的换行符为“%01”(确保这个值不会出现在字段值中),这样导出的CSV文件中换行符就是“%01”。然后再使用CDM将CSV文件导入到MRS HBase时,指定源端的换行符为“%01”,这样就避免了数据被截断的问题。
  • 二进制格式 如果想要在文件系统间按原样复制文件,则可以选择二进制格式。二进制格式传输文件到文件的速率高、性能稳定,且不需要在作业第二步进行字段匹配。 文件传输的目录结构 CDM的文件传输,支持单文件,也支持一次传输目录下所有的文件。传输到目的端后,目录结构会保持原样。 增量迁移文件 使用CDM进行二进制传输文件时,目的端有一个参数“重复文件处理方式”,可以用作文件的增量迁移,具体请参见文件增量迁移。 增量迁移文件的时候,选择“重复文件处理方式”为“跳过重复文件”,这样如果源端有新增的文件,或者是迁移过程中出现了失败,只需要再次运行任务,已经迁移过的文件就不会再次迁移。 写入到临时文件 二进制迁移文件时候,可以在目的端指定是否写入到临时文件。如果指定了该参数,在文件复制过程中,会将文件先写入到一个临时文件中,迁移成功后,再进行rename或move操作,在目的端恢复文件。 生成文件MD5值 对每个传输的文件都生成一个MD5值,并将该值记录在一个新文件中,新文件以“.md5”作为后缀,并且可以指定MD5值生成的目录。
  • JSON格式 这里主要介绍JSON文件格式的以下内容: CDM支持解析的JSON类型 记录节点 从JSON文件复制数据 CDM支持解析的JSON类型:JSON对象、JSON数组。 JSON对象:JSON文件包含单个对象,或者以行分隔/串连的多个对象。 单一对象JSON: { "took" : 190, "timed_out" : false, "total" : 1000001, "max_score" : 1.0 } 行分隔的JSON对象: {"took" : 188, "timed_out" : false, "total" : 1000003, "max_score" : 1.0 } {"took" : 189, "timed_out" : false, "total" : 1000004, "max_score" : 1.0 } 串连的JSON对象: { "took": 190, "timed_out": false, "total": 1000001, "max_score": 1.0 } { "took": 191, "timed_out": false, "total": 1000002, "max_score": 1.0 } JSON数组:JSON文件是包含多个JSON对象的数组。 [{ "took" : 190, "timed_out" : false, "total" : 1000001, "max_score" : 1.0 }, { "took" : 191, "timed_out" : false, "total" : 1000001, "max_score" : 1.0 }] 记录节点 记录数据的根节点。该节点对应的数据为JSON数组,CDM会以同一模式从该数组中提取数据。多层嵌套的JSON节点以字符“.”分割。 从JSON文件复制数据 示例一:从行分隔/串连的多个对象中提取数据。JSON文件包含了多个JSON对象,例如: { "took": 190, "timed_out": false, "total": 1000001, "max_score": 1.0 } { "took": 191, "timed_out": false, "total": 1000002, "max_score": 1.0 } { "took": 192, "timed_out": false, "total": 1000003, "max_score": 1.0 } 如果您想要从该JSON对象中提取数据,使用以下格式写入到数据库,只需要在作业第一步指定文件格式为“JSON格式”,指定JSON类型为“JSON对象”,然后在作业第二步进行字段匹配即可。 took timedOut total maxScore 190 false 1000001 1.0 191 false 1000002 1.0 192 false 1000003 1.0 示例二:从记录节点中提取数据。JSON文件包含了单个的JSON对象,但是其中有效的数据在一个数据节点下,例如: { "took": 190, "timed_out": false, "hits": { "total": 1000001, "max_score": 1.0, "hits": [{ "_id": "650612", "_source": { "name": "tom", "books": ["book1","book2","book3"] } }, { "_id": "650616", "_source": { "name": "tom", "books": ["book1","book2","book3"] } }, { "_id": "650618", "_source": { "name": "tom", "books": ["book1","book2","book3"] } }] } } 如果想以如下格式写入到数据库,则需要在作业第一步指定文件格式为“JSON格式”,指定JSON类型为“JSON对象”,并且指定记录节点为“hits.hits”,然后在作业第二步进行字段匹配。 ID SourceName SourceBooks 650612 tom ["book1","book2","book3"] 650616 tom ["book1","book2","book3"] 650618 tom ["book1","book2","book3"] 示例三:从JSON数组中提取数据。JSON文件是包含了多个JSON对象的JSON数组,例如: [{ "took" : 190, "timed_out" : false, "total" : 1000001, "max_score" : 1.0 }, { "took" : 191, "timed_out" : false, "total" : 1000002, "max_score" : 1.0 }] 如果想以如下格式写入到数据库,需要在作业第一步指定文件格式为“JSON格式”,指定JSON类型为“JSON数组”,然后在作业第二步进行字段匹配。 took timedOut total maxScore 190 false 1000001 1.0 191 false 1000002 1.0 示例四:在解析JSON文件的时候搭配转换器。在示例二前提下,想要把hits.max_score字段附加到所有记录中,即以如下格式写入到数据库中: ID SourceName SourceBooks MaxScore 650612 tom ["book1","book2","book3"] 1.0 650616 tom ["book1","book2","book3"] 1.0 650618 tom ["book1","book2","book3"] 1.0 则需要在作业第一步指定文件格式为“JSON格式”,指定JSON类型为“JSON对象”,并且指定记录节点为“hits.hits”,然后在作业第二步添加转换器,操作步骤如下: 单击添加字段,新增一个字段。 图2 添加字段 在添加的新字段后面,单击添加字段转换器。 图3 添加字段转换器 创建“表达式转换”的转换器,表达式输入“1.0”,然后保存。 图4 配置字段转换器
  • 文件格式的公共参数 启动作业标识文件 这个主要用于自动化场景中,CDM配置了定时任务,周期去读取源端文件,但此时源端的文件正在生成中,CDM此时读取会造成重复写入或者是读取失败。所以,可以在源端作业参数中指定启动作业标识文件为“ok.txt”,在源端生成文件成功后,再在文件目录下生成“ok.txt”,这样CDM就能读取到完整的文件。 另外,可以设置超时时间,在超时时间内,CDM会周期去查询标识文件是否存在,超时后标识文件还不存在的话,则作业任务失败。 启动作业标识文件本身不会被迁移。 作业成功标识文件 文件系统为目的端的时候,当任务成功时,在目的端的目录下,生成一个空的文件,标识文件名由用户来指定。一般和“启动作业标识文件”搭配使用。 这里需要注意的是,不要和传输的文件混淆,例如传输文件为finish.txt,但如果作业成功标识文件也设置为finish.txt,这样会造成这两个文件相互覆盖。 过滤器 使用CDM迁移文件的时候,可以使用过滤器来过滤文件。支持通过通配符或时间过滤器来过滤文件。 选择通配符时,CDM只迁移满足过滤条件的目录或文件。 选择时间过滤器时,只有文件的修改时间晚于输入的时间才会被传输。 例如:用户的“/table/”目录下存储了很多数据表的目录,并且按天进行了划分:DRIVING_BEHAVIOR_20180101~DRIVING_BEHAVIOR_20180630,保存了DRIVING_BEHAVIOR从1月到6月的所有数据。如果只想迁移DRIVING_BEHAVIOR的3月份的表数据。那么需要在作业第一步指定源目录为“/table”,过滤类型选择“通配符”,然后指定“路径过滤器”为“DRIVING_BEHAVIOR_201803*”。
  • 到期与欠费 欠费:按需付费是根据每个计费项在对应的计费周期进行扣费的,若余额不足,则无法对上一个计费周期进行扣费,从而导致华为云 实时音视频 服务欠费。欠费后会进入资源保留期,您在实时音视频服务中配置的数据会予以保留,但无法访问及使用实时音视频服务相关功能。保留期满仍未缴清欠款,存储在实时音视频服务中的数据将被删除且无法恢复。关于保留期时长等更多详细介绍请参见宽限期保留期。为防止相关资源被停止或释放,请您及时为账户进行充值,具体请参见欠费还款。 服务到期:按需付费没有到期概念。
  • 云端合流转码费用 表8 合流转码计费价格 产品规格 单价(元/分钟) FHD(超清) H264 0.068 HD(高清) H264 0.032 SD(标清) H264 0.016 FHD(超清) H265 0.17 HD(高清) H265 0.08 SD(标清) H265 0.04 Audio(音频) 0.006 计费公式 合流转码费用 = 合流转码规格单价 × 合流转码时长用量 计费规则 转码时长分为音频时长和视频时长。 视频时长会根据用户转码视频分辨率划分视频档位,然后分别对不同档位的转码时长进行计费。 表9 视频分辨率 视频档位 视频分辨率 FHD(超清) 1280*720 - 1920*1080(含) HD(高清) 640*480 - 1280*720(含) SD(标清) 不高于640*480(含) 语音时长是指转码只有纯音频的时间。转码后输出的同一条流在同一时间内,既有视频又有音频时,只按视频时长统计,不会重复计算语音时长。 计费示例:使用H.264编码方式将A、B、C用户流合流转码输出1280 × 720分辨率的视频30分钟,则本次合流转码产生的费用为:0.032(元/分钟)*30(分钟) = 0.96(元) 用户 分辨率和时长 费用(元) A、B、C 1280 × 720(高清) 30分钟 0.032*30
  • 云端录制费用 表6 云端录制计费价格 产品规格 单价(元/分钟) FHD(超清) 0.048 HD(高清) 0.013 SD(标清) 0.0065 Audio(音频) 0.0035 计费公式 云端录制费用 = 录制规格单价 × 录制时长用量 计费规则 录制时长分为音频时长和视频时长。 视频时长会根据用户录制视频分辨率划分视频档位,然后分别对不同档位的录制时长进行计费。若使用自定义分辨率,则按宽高乘积计费。 表7 视频分辨率 视频档位 视频分辨率 FHD(超清) 1280*720 - 1920*1080(含) HD(高清) 640*480 - 1280*720(含) SD(标清) 不高于640*480(含) 语音时长是指录制中只有纯音频的时间。同一个录制文件同一时间内,既有视频又有音频时,只按视频时长统计,不会重复计算语音时长。 默认情况下,房间内每个用户的音视频流将分别录制成独立的文件,如需将单个房间内多个用户的视频画面录制在一个文件内,可以通过云端混流转码将视频画面混合。使用云端混流转码功能将产生额外的转码费用,详情请参见云端合流转码费用。 计费示例 场景一(单流录制):用户A、B、C在同一房间持续通话30分钟,将A、B、C三个用户的整个通话过程分别录制成独立的文件,3人共生成3个文件,则本次产生的单流录制费用为:(0.013元/分钟 + 0.0065元/分钟 + 0.007元/分钟)*30分钟 = 0.795(元) 用户 分辨率和时长 费用(元) A 1280 × 720(高清) 30分钟 0.013*30 B 640 × 480(标清) 30分钟 0.0065*30 C 音频 30分钟 0.007*30 场景二(合流录制):用户A、B、C 在同一房间持续通话30分钟,将A、B、C三个用户的整个通话过程合流转码后录制成1个文件,合流转码后输出的视频分辨率始终为1280 × 720(高清),则本次产生的合流录制费用为:0.013元/分钟*30分钟 = 0.39(元) 用户 分辨率和时长 费用(元) A、B、C 1280 × 720(高清) 30分钟 0.013*30 使用云端合流转码功能将产生额外的合流转码费用,具体请参见云端合流转码费用。
  • 计费项 华为云实时音视频服务的计费项分为基础服务费用和增值服务费用两类。 基础服务费用:包含语音通话和视频通话费用。 增值服务费用:包含云端录制和云端合流转码费用,增值服务是基于基础服务之上额外提供的增值功能,无法脱离基础服务单独使用,使用增值服务需支付额外的增值费用。 具体说明如表2所示,各计费项的价格详情请参见产品价格详情。 您可以通过华为云实时音视频服务提供的价格计算器,选择您需要的产品规格快速计算出购买实时音视频时长的参考价格。 表2 计费项说明 分类 计费项 场景说明 计费说明 付费方式 基础服务 语音通话 两人或多人语音通话,如语聊房、语音互动直播、语音会议等场景。 按房间内每个用户加入房间后产生的纯音频通话总时长进行计费。 具体请参见语音通话费用。 按需付费 视频通话 两人或多人视频通话,如连麦视频互动场景、视频会议、互动小班课等场景。 按房间内所有用户产生的视频时长和音频时长来统计用量。视频时长是指用户进入房间后订阅了音视频流并且成功接收到了视频画面的时间。 根据用户实际接收到的视频分辨率划分视频档位,然后分别对不同档位的视频通话时长进行计费。 具体请参见视频通话费用。 增值服务 云端录制 对音视频通话、互动直播的音视频内容进行录制,用于回放、 内容审核 等。 按云端录制输出结果的录制总时长进行计费。 录制时长分为音频时长和视频时长。视频时长会根据用户录制视频分辨率划分视频档位,然后分别对不同档位的录制时长进行计费。 具体请参见云端录制费用。 说明: 由于录制文件是存储在OBS中的,因此,产生的存储费用由OBS单独收取,具体价格详情请参见OBS-产品价格详情。 云端合流转码 对房间内各路音视频流按需进行合流转码,转码后输出的音视频流可旁路推流至云端录制或直播CDN观看。 按云端合流转码后输出的转码时长来统计合流转码服务的用量。转码时长分为音频时长和视频时长。视频时长会根据转码后输出的视频分辨率划分视频档位,然后分别对不同档位的视频时长进行计费。 具体请参见云端合流转码费用。
共100000条