华为云用户手册

  • 如何查看 MRS 作业日志? MRS Console页面作业管理,每一条作业支持查看日志,包含launcherJob日志和realJob日志。 launcherJob作业的日志,一般会在stderr和stdout中打印错误日志,如下图所示: realJob的日志,可以通过MRS Manager中 Yarn服务提供的ResourceManager Web UI查看。 登录集群Master节点,可获取1作业的日志文件 ,具体hdfs路径为“/tmp/logs/{submit_user}/logs/{application_id}”。 提交作业后,在Yarn的WEB UI未找到对应作业的application_id,说明该作业没有提交成功,可登录集群主Master节点,查看提交作业进程日志“/var/log/executor/logs/exe.log”。 父主题: 作业开发类
  • 报错提示“当前用户在MRS Manager不存在,请先在 IAM 给予该用户足够的权限,再在概览页签进行IAM用户同步” 安全集群使提交作业时,未进行IAM用户同步,会出现“当前用户在MRS Manager不存在,请先在IAM给予该用户足够的权限,再在概览页签进行IAM用户同步”错误。 需要在提交作业之前,先在集群详情页的“概览”页签,单击“IAM用户同步”右侧的“同步”进行IAM用户同步,然后再提交作业。 父主题: 作业开发类
  • MRS集群安装的Python版本是多少? 以root用户登录任意一个Master节点,然后执行Python3即可获取MRS集群安装的python版本。 表1 MRS集群安装的Python版本 MRS集群版本 Python版本 MRS 3.1.0 Python 3.8.0 MRS 3.0.5 Python 3.7.0 MRS 3.0.2 Python 3.7.0 MRS 2.1.1 Python 3.6.8 MRS 2.1.0 Python 3.6.8 MRS 1.9.3 Python 3.6.8 父主题: 集群管理类
  • 如何重置Kafka数据? 删除Kafka topic信息即重置Kafka数据,具体命令请参考: 删除topic:kafka-topics.sh --delete --zookeeper ZooKeeper集群业务IP:2181/kafka --topic topicname 查询所有topic:kafka-topics.sh --zookeeper ZooKeeper集群业务IP:2181/kafka --list 执行删除命令后topic数据为空则此topic会立刻被删除,如果有数据则会标记删除,后续Kafka会自行进行实际删除。 父主题: 大数据业务开发
  • 开启Kerberos认证的集群如何访问Hive? 用root用户登录集群Master节点。 配置环境变量。 source /opt/client/bigdata_env 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户,当前用户需要具有创建Hive表的权限,具体请参见配置Hive权限配置拥有对应权限的角色,并为用户绑定对应角色。 kinit MRS集群用户 例如,kinit hiveuser 执行Hive组件的客户端命令。 beeline 在beeline中运行Hive命令,例如: create table test_obs(a int, b string) row format delimited fields terminated by "," stored as textfile location "obs://test_obs"; 使用“Ctrl + C”退出hive beeline。 父主题: Kerberos使用
  • 如何通过happybase连接到MRS服务的HBase? MRS服务集群的HBase服务使用的是thriftserver2,thriftserver1和thriftserver2不能同时并存,但happybase只能通过thriftserver1接口连接到HBase,故建议客户使用python直接连接到HBase,具体实现请参考demohttps://github.com/huaweicloud/huaweicloud-mrs-example/blob/mrs-1.8/src/hbase-examples/hbase-python-example/DemoClient.py。 父主题: 大数据业务开发
  • 如何配置knox内存? 以root用户登录集群Master节点。 在Master节点执行如下命令打开gateway.sh文件。 su omm vim /opt/knox/bin/gateway.sh 将“APP_MEM_OPTS=""” 修改为 “APP_MEM_OPTS="-Xms256m -Xmx768m"” 保存并退出文件。 在Master节点执行如下命令重启knox进程。 sh /opt/knox/bin/gateway.sh stop sh /opt/knox/bin/gateway.sh start 在其他Master节点上重复执行如上步骤。 执行ps -ef |grep knox命令可查看已设置的内存信息。 图1 knox内存 父主题: 集群管理类
  • MRS如何连接spark-shell 用root用户登录集群Master节点。 配置环境变量。 source 客户端安装目录/bigdata_env 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户。如果当前集群未启用Kerberos认证,则无需执行此命令。 kinit MRS集群用户 例如: 开发用户为“机机”用户时请执行:kinit -kt user.keytab sparkuser 开发用户为“人机”用户时请执行:kinit sparkuser 执行如下命令连接Spark组件的客户端。 spark-shell 父主题: 大数据业务开发
  • MRS如何连接spark-beeline 用root用户登录集群Master节点。 配置环境变量。 source 客户端安装目录/bigdata_env 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户。如果当前集群未启用Kerberos认证,则无需执行此命令。 kinit MRS集群用户 例如: 开发用户为“机机”用户时请执行:kinit -kt user.keytab sparkuser 开发用户为“人机”用户时请执行:kinit sparkuser 执行如下命令连接Spark组件的客户端。 spark-beeline 在spark-beeline中执行命令,例如在obs://mrs-word001/table/目录中创建表test。 create table test(id int) location 'obs://mrs-word001/table/'; 执行如下命令查询所有表,返回结果中存在表test,即表示访问OBS成功。 show tables; 图1 Spark验证返回已创建的表名 使用“Ctrl + C”退出spark beeline。 父主题: 大数据业务开发
  • MRS sudo log能否清理? MRS sudo log文件是omm用户的操作记录,是为了方便问题的定位 ,可以清理。因为日志占用了一部分存储空间,建议客户可以清除比较久远的操作日志释放资源空间。 日志文件较大,可以将此文件目录添加到/etc/logrotate.d/syslog中,让系统做日志老化 ,定时清理久远的日志 。 方法:更改文件日志目录:sed -i '3 a/var/log/sudo/sudo.log' /etc/logrotate.d/syslog 可以根据日志个数和大小进行设置/etc/logrotate.d/syslog,超过设置的日志会自动删除掉。一般默认按照存档大小和个数进行老化的,可以通过size和rotate分别是日志大小限制和个数限制,默认没有时间周期的限制,如需进行周期设置可以增加daily/weekly/monthly指定清理日志的周期为每天/每周/每月。 父主题: 产品咨询类
  • 响应示例 成功响应 HTTP状态码 200 { "name":"connection1", "type":"DWS", "config":{ "clusterName":"test", "userName":"dbadmin", "password":"*********", "kmsKey":"cdm-dlf", "agentName":"cdm-donotdelete", "sslEnable":false }} 失败响应 HTTP状态码 400 { "error_code":"DLF.6322", "error_msg":"The data connection does not exist."}
  • 响应示例 成功响应 HTTP状态码 200 { "total":1, "connections":[ { "name":"connection1", "type":"DWS", "config":{ "clusterName":"test", "userName":"dbadmin", "password":"*********", "kmsKey":"cdm-dlf", "agentName":"cdm-donotdelete", "sslEnable":false } } ]} 失败响应 HTTP状态码 400 { "error_code":"DLF.3051", "error_msg":"The request parameter is invalid."}
  • 创建迁移作业 连接创建成功后,调用指定集群创建作业API创建迁移作业,作业样例如下: 作业名称:mysql2dws。 从MySQL导出数据的数据库名称为default,导出的表名称为mysql_tbl,依据id字段将作业分割为多个任务并发执行。 导入DWS的数据库名称为public,表名为cdm_all_type,导入前不清空数据。 当DWS数据库里没有本地MySQL数据库中的表时, CDM 自动在DWS端创建该表。 DWS端加载的字段列表为id&gid&name。 作业抽取数据时,并发执行的Extractor数量为3。 如果返回状态码为200,则说明创建命令执行成功。 curl -X POST -H "Content-Type:application/json" -H "X-Cluster-ID:$ID" -H "X-Auth-Token:$Token" -d '{ "jobs": [{ "job_type": "NORMAL_JOB", "name": "mysql2dws", "from-link-name": "mysql_link", "from-connector-name": "generic-jdbc-connector", "to-link-name": "dws_link", "to-connector-name": "generic-jdbc-connector", "from-config-values": { "configs": [{ "name": "fromJobConfig", "inputs": [{ "name": "fromJobConfig.schemaName", "value": "default" }, { "name": "fromJobConfig.tableName", "value": "mysql_tbl" }, { "name": "fromJobConfig.partitionColumn", "value": "id" }] }] },"to-config-values": { "configs": [ { "inputs": [ { "name": "toJobConfig.schemaName", "value": "public" }, { "name": "toJobConfig.tablePreparation", "value": "CREATE_WHEN_NOT_EXIST" }, { "name": "toJobConfig.tableName", "value": "cdm_all_type" }, { "name": "toJobConfig.columnList", "value": "id&gid&name" }, { "name": "toJobConfig.shouldClearTable", "value": "false" } ], "name": "toJobConfig" } ] }, "driver-config-values": { "configs": [{ "name": "throttlingConfig", "inputs": [{ "name": "throttlingConfig.numExtractors", "value": "3" }] }] } }]}' https://{cdm_endpoint}/v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/bae65496-643e-47ca-84af-948672de7eeb/cdm/job -k -v 调用启动作业API开始执行作业。 curl -X GET -H 'Content-Type:application/json;charset=utf-8' -H "X-Cluster-ID:$ID" -H "X-Auth-Token:$Token" https://{cdm_endpoint}/v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/bae65496-643e-47ca-84af-948672de7eeb/cdm/job/mysql2dws/start -k -v 响应如下: { "submissions": [{ "progress": 1, "job-name": "mysql2dws", "status": "BOOTING", "creation-date": 1536654788622, "creation-user": "cdm" }]}
  • 查看作业结果 调用查询作业状态API查询作业状态。 curl -X GET -H 'Content-Type:application/json;charset=utf-8' -H "X-Cluster-ID:$ID" -H "X-Auth-Token:$Token" https://{cdm_endpoint}/v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/6ec9a0a4-76be-4262-8697-e7af1fac7920/cdm/job/mysql2dws/status -k -v 查看作业执行结果,作业执行成功的响应如下: { "submissions": [{ "progress": 0, "job-name": "mysql2dws", "status": "SUCCEEDED", "creation-date": 1536654788622, "creation-user": "cdm", "isStopingIncrement": "", "last-update-date": 1536654888622, "is-execute-auto": false, "last-udpate-user": "cdm", "isDeleteJob": false, "isIncrementing": false, "external-id": "job_local1127970451_0009", "counters": { "org.apache.sqoop.submission.counter.SqoopCounters": { "BYTES_WRITTEN": -1, "TOTAL_FILES": -1, "BYTES_READ": -1, "FILES_WRITTEN": -1, "TOTAL_SIZE": -1, "FILES_READ": -1, "ROWS_WRITTEN": 80, "ROWS_READ": 80 } } }]} BYTES_WRITTEN:表示写入的字节数。 BYTES_READ:表示读取的字节数。 TOTAL_FILES:表示总文件数。 FILES_WRITTEN:表示写入的文件数。 FILES_READ:表示读取的文件数。 ROWS_WRITTEN:表示写入成功的行数。 ROWS_READ:表示读取成功的行数。
  • 获取token 调用其他API前,需要获取token,并设置成环境变量。 curl -H "Content-Type:application/json" https://{iam_endpoint}/v3/auth/tokens -X POST -d '{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "Username", "password": "password", "domain": { "name": "Account Name" } } } }, "scope": { "project": { "id": "1551c7f6c808414d8e9f3c514a170f2e" } } }}' -v -k 响应Header中“X-Subject-Token”的值即为Token: X-Subject-Token:MIIDkgYJKoZIhvcNAQcCoIIDgzCCA38CAQExDTALBglghkgBZQMEAgEwgXXXXX... 使用如下命令将token设置为环境变量,方便后续事项。 export Token = MIIDkgYJKoZIhvcNAQcCoIIDgzCCA38CAQExDTALBglghkgBZQMEAgEwgXXXXX...
  • 创建CDM集群 调用创建集群API创建集群,假设集群详情如下: 集群名称为“cdm-ab82”。 集群规格为“cdm.medium”。 VPC、子网、安全组与DWS一致,且自动绑定弹性IP。 如果返回状态码为200,则说明创建命令执行成功。 curl -X POST -H 'Content-Type:application/json;charset=utf-8' -H "X-Auth-Token:$Token" -d '{ "cluster": { "name": "cdm-ab82", "vpcId": "6b47302a-bf79-4b20-bf7a-80987408e196", "instances": [{ "flavorRef": "fb8fe666-6734-4b11-bc6c-43d11db3c745", "nics": [{ "net-id": "63bdc3cb-a4e7-486f-82ee-d9bf208c8f8c", "securityGroupId": "005af77a-cce5-45ac-99c7-2ea50ea8addf" }], "availability_zone": "Project Name", "type": "cdm" }], "datastore": { "version": "1.8.5", "type": "cdm" }, "isScheduleBootOff": false, "scheduleBootTime": "null", "scheduleOffTime": "null", "isAutoOff": false, "sys_tags": [{ "key": "_sys_enterprise_project_id", "value": "1ce45885-4033-40d2-bdde-d4dbaceb387d" }] }, "autoRemind": false, "phoneNum": "null", "email": "null"}' https://{cdm_endpoint}/v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters -v -k 调用查询集群列表查询集群信息,获取集群的ID,并设置为全局变量。 curl -X GET -H 'Content-Type:application/json;charset=utf-8' -H "X-Auth-Token:$Token" https://{cdm_endpoint}/v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters -k -v 获取响应如下所示。 { "clusters": [{ "version": "x.x.x", "updated": "2018-09-05T08:38:25", "name": "cdm-ab82", "created": "2018-09-05T08:38:25", "id": "bae65496-643e-47ca-84af-948672de7eeb", "status": "200", "isFrozen": "0", "statusDetail": "Normal", "actionProgress": {}, "config_status": "In-Sync" }]} “status”的状态如果为200则表示集群创建成功,集群对应的ID为bae65496-643e-47ca-84af-948672de7eeb。 使用如下命令将集群对应的ID设置为全局变量,方便后续事项。 export ID = bae65496-643e-47ca-84af-948672de7eeb
  • 创建连接 调用创建连接API创建MySQL连接,连接名称为mysql_link。这里假设本地MySQL数据库信息如下: IP地址为1xx.120.85.24。 端口为3306。 数据库名称为DB_name。 登录用户为username。 密码为DB_password。 如果返回状态码为200,则说明创建命令执行成功。 curl -X POST -H "Content-Type:application/json" -H "X-Auth-Token:$Token" -d '{ "links": [{ "enabled": true, "update-user": null, "name": "mysql_link", "link-config-values": { "configs": [ { "name": "linkConfig", "inputs": [ { "name": "linkConfig.databaseType", "value": "MYSQL" }, { "name": "linkConfig.host", "value": "1xx.120.85.24" }, { "name": "linkConfig.port", "value": "3306" }, { "name": "linkConfig.database", "value": "DB_name" }, { "name": "linkConfig.username", "value": "username" }, { "name": "linkConfig.password", "value": "DB_password" }, { "name": "linkConfig.fetchSize", "value": "100000" }, { "name": "linkConfig.usingNative", "value": "true" } ] } ] }, "connector-name": "generic-jdbc-connector", "creation-date": 1536654788622, "update-date": 1536654788622, "creation-user": null }]}' https://{cdm_endpoint}/v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/bae65496-643e-47ca-84af-948672de7eeb/cdm/link -k -v 调用创建连接API创建DWS连接,连接名称为dws_link。这里假设DWS数据库信息如下: 数据库的IP地址为10.120.85.24。 端口为3306。 数据库的名称为DWS。 登录用户为user_dws。 密码为dws_password。 curl -X POST -H "Content-Type:application/json" -H "X-Auth-Token:$Token" -d '{ "links": [{ "enabled": true, "update-user": null, "name": "dws_link", "link-config-values": { "configs": [ { "name": "linkConfig", "inputs": [ { "name": "linkConfig.databaseType", "value": "DWS" }, { "name": "linkConfig.host", "value": "10.120.85.24" }, { "name": "linkConfig.port", "value": "3306" }, { "name": "linkConfig.database", "value": "DWS" }, { "name": "linkConfig.username", "value": "user_dws" }, { "name": "linkConfig.password", "value": "dws_password" }, { "name": "linkConfig.fetchSize", "value": "100000" }, { "name": "linkConfig.usingNative", "value": "true" } ] } ] }, "connector-name": "generic-jdbc-connector", "creation-date": 1536654788622, "update-date": 1536654788622, "creation-user": null }]}' https://{cdm_endpoint}/v1.1/1551c7f6c808414d8e9f3c514a170f2e/clusters/bae65496-643e-47ca-84af-948672de7eeb/cdm/link -k -v
  • 准备数据 在调用API之前,您需要准备如下数据。 表1 准备数据 数据项 名称 说明 样例 云帐户信息 项目名 CDM所属的项目名。 Project Name 项目ID CDM所属的项目ID。 1551c7f6c808414d8e9f3c514a170f2e 帐号名 用户所属的企业帐户名称。 Account Name 用户名 使用云服务的用户名,该用户需要拥有CDM的操作权限。 Username 密码 用户密码。 password VPC信息 VPC的ID CDM所属的VPC必须与DWS一致。 6b47302a-bf79-4b20-bf7a-80987408e196 子网ID CDM所属的子网必须与DWS一致。 63bdc3cb-a4e7-486f-82ee-d9bf208c8f8c 安全组ID CDM所属的安全组必须与DWS一致。 005af77a-cce5-45ac-99c7-2ea50ea8addf Endpoint IAM的Endpoint 终端节点(Endpoint)即调用API的请求地址,不同服务不同区域的终端节点不同。Endpoint您可以从终端节点及区域说明获取。 iam_endpoint CDM的Endpoint 终端节点(Endpoint)即调用API的请求地址,不同服务不同区域的终端节点不同。本服务的Endpoint您可以从终端节点Endpoint获取。 cdm_endpoint MySQL数据库 IP地址 本地的MySQL数据库的IP地址,且该地址允许CDM通过公网IP访问。 1xx.120.85.24 端口 MySQL数据库的端口。 3306 数据库名称 待导出数据的MySQL数据库名称。 DB_name 用户名 访问MySQL数据库的用户,该用户拥有MySQL数据库的读、写和删除权限。 username 密码 访问MySQL数据库的用户密码。 DB_password DWS数据库 IP地址 DWS数据库的IP地址,CDM可通过内网访问该地址。 10.120.85.24 端口 DWS数据库的端口。 3306 数据库名称 待写入数据的DWS数据库名称。 DWS 用户名 访问DWS数据库的用户,该用户拥有DWS数据库的读、写和删除权限。 user_dws 密码 访问DWS数据库的用户密码。 dws_password
  • 解析响应消息体中的流 导出作业和导出连接的接口响应消息是一个流,需要转化为一个文件。可以参考下面的样例代码: String EXPORT_JOB_URL = "https://{endpoint}/v1/{project_id}/jobs/{job_name}/export";try (CloseableHttpClient httpClient = HttpClients.createDefault()) { HttpPost httpPost = new HttpPost(EXPORT_JOB_URL); httpPost.setHeader("Content-Type", "application/json; charset=UTF-8"); httpPost.setHeader("Accept", "application/octet-stream"); httpPost.setHeader("X-Auth-Token", token); HttpResponse response = httpClient.execute(httpPost); int statusCode = response.getStatusLine().getStatusCode(); if (statusCode == 200) { String filePath = "d:"; String fileName = "job.zip"; FileOutputStream fileOutputStream = new FileOutputStream(filePath + fileName); response.getEntity().writeTo(fileOutputStream); } else { System.out.println(statusCode); }} 父主题: 附录
  • 请求示例 修改连接。 PUT /v1/b384b9e9ab9b4ee8994c8633aabc9505/connections/connection1?ischeck=true{ "name":"connection1", "type":"DWS", "config":{ "clusterName":"test", "userName":"dbadmin", "password":"*********", "kmsKey":"cdm-dlf", "agentName":"cdm-donotdelete", "sslEnable":false }}
  • JSON样例 "from-config-values": { "configs": [ { "inputs": [ { "name": "fromJobConfig.bucketName", "value": "cdm-est" }, { "name": "fromJobConfig.inputDirectory", "value": "/obsfrom/varchar.txt" }, { "name": "fromJobConfig.inputFormat", "value": " CS V_FILE" }, { "name": "fromJobConfig.columnList", "value": "1&2&3" }, { "name": "fromJobConfig.fieldSeparator", "value": "," }, { "name": "fromJobConfig.quoteChar", "value": "false" }, { "name": "fromJobConfig.regexSeparator", "value": "false" }, { "name": "fromJobConfig.firstRowAsHeader", "value": "false" }, { "name": "fromJobConfig.encodeType", "value": "UTF-8" }, { "name": "fromJobConfig.fromCompression", "value": "NONE" }, { "name": "fromJobConfig.splitType", "value": "FILE" } ], "name": "fromJobConfig" } ] }
  • 参数说明 参数 是否必选 类型 说明 fromJobConfig.bucketName 是 String 对象存储的桶名。 fromJobConfig.inputDirectory 是 String 抽取文件的路径。支持输入多个文件路径(最多50个),默认以“|”分隔,也可以自定义文件分隔符,例如:“FROM/example.csv|FROM/b.txt”。 fromJobConfig.inputFormat 是 枚举 传输数据时所用的文件格式,目前支持以下文件格式: CSV_FILE:CSV格式,用于迁移文件到数据表的场景。 JSON_FILE:JSON格式,一般都是用于迁移文件到数据表的场景。 BINARY_FILE:二进制格式,不解析文件内容直接传输,不要求文件格式必须为二进制。适用于文件到文件的原样复制。 当选择“BINARY_FILE”时,目的端也必须为文件系统。 fromJobConfig.lineSeparator 否 String 文件中的换行符,默认自动识别"\\n"、"\\r"或"\\r\\n"。手动配置特殊字符,如空格回车需使用URL编码后的值。或通过编辑作业json方式配置,无需URL编码。 fromJobConfig.columnList 否 String 需要抽取的列号,列号之间使用“&”分割,并由小到大排序,例如:“1&3&5”。 fromJobConfig.regexSeparator 否 Boolean 是否使用正则表达式分割字段,当文件格式为“CSV_FILE”时此参数有效。 fromJobConfig.regex 否 String 正则表达式,当选择使用正则表达式分割字段时,此参数有效。 fromJobConfig.fieldSeparator 否 String 字段分隔符,当文件格式为“CSV_FILE”时此参数有效,默认值为:“,”。 fromJobConfig.quoteChar 否 Boolean 是否使用包围符,选择“true”时,包围符内的字段分隔符会被视为字符串值的一部分,目前CDM默认的包围符为:"。 fromJobConfig.firstRowAsHeader 否 Boolean 是否默认首行为标题行,当文件格式为“CSV_FILE”时此参数有效。在迁移CSV文件到表时,CDM默认是全部写入,当该参数选择“true”时,CDM会将CSV文件的第一行数据作为标题行,不写入目的端的表。 fromJobConfig.fromCompression 否 枚举 压缩格式,当文件格式为“CSV_FILE”或“JSON”时此参数有效。选择对应压缩格式的源文件: NONE:表示传输所有格式的文件。 GZIP:表示只传输GZIP格式的文件。 ZIP:表示只传输ZIP格式的文件。 fromJobConfig.jsonReferenceNode 否 String 记录节点,当文件格式为“JSON_FILE”时此参数有效。对该JSON节点下的数据进行解析,如果该节点对应的数据为JSON数组,那么系统会以同一模式从该数组中提取数据。多层嵌套的JSON节点以字符“.”分割,例如:“data.list”。 fromJobConfig.encodeType 否 String 编码类型,例如:“UTF_8”或“GBK”。 fromJobConfig.useMarkerFile 否 Boolean 选择是否开启作业标识文件的功能。当源端路径下存在启动作业的标识文件时才启动作业,否则会挂起等待一段时间,等待时长在下方“fromJobConfig.waitTime”(等待时间)参数中配置。 fromJobConfig.markerFile 否 String 启动作业的标识文件名。指定文件后,只有在源端路径下存在该文件的情况下才会运行任务,不指定时默认不启用该功能,例如:“ok.txt”。 fromJobConfig.waitTime 否 String 选择开启作业标识文件的功能时,如果源路径下不存在启动作业的标识文件,作业挂机等待的时长,当超时后任务会失败。 等待时间设置为0时,当源端路径下不存在标识文件,任务会立即失败。 单位:秒。 fromJobConfig.filterType 否 枚举 选择过滤器类型: WILDCARD:输入通配符作为过滤文件,满足过滤条件的路径或文件会被传输。 TIME:时间过滤器,当文件的修改时间晚于输入的时间时,该文件才会被传输。 fromJobConfig.pathFilter 否 String 路径过滤器,过滤类型为通配符时配置,用于过滤文件目录,例如:“*input”。 fromJobConfig.fileFilter 否 String 文件过滤器,过滤类型为通配符时配置,用于过滤目录下的文件,支持配置多个文件,中间使用“,”分隔,例如:“*.csv,*.txt”。 fromJobConfig.startTime 否 String “过滤类型”选择“时间过滤器”时,可以指定一个时间值,当文件的修改时间大于该时间才会被传输,输入的时间格式需为“yyyy-MM-dd HH:mm:ss”。 该参数支持配置为时间宏变量,例如${timestamp(dateformat(yyyy-MM-dd HH:mm:ss,-90,DAY))}表示:只迁移最近90天内的文件。 fromJobConfig.endTime 否 String “过滤类型”选择“时间过滤器”时,可以指定一个时间值,当文件的修改时间小于该时间才会被传输,输入的时间格式需为“yyyy-MM-dd HH:mm:ss”。 该参数支持配置为时间宏变量,例如${timestamp(dateformat(yyyy-MM-dd HH:mm:ss))}表示:只迁移修改时间为当前时间以前的文件。 fromJobConfig.fileSeparator 否 String “fromJobConfig.inputDirectory”(抽取文件的路径)参数中如果输入的是多个文件路径,CDM使用这里配置的文件分隔符来区分各个文件,默认为“|”。 fromJobConfig.decryption 否 枚举 导出文件时,选择是否对已加密的文件解密后再导出,以及解密方式: NONE:不解密,直接导出文件。 AES-256-GCM:使用AES-256-GCM(NoPadding)算法解密后再导出文件。 fromJobConfig.dek 否 String 数据解密密钥,密钥由长度64的十六进制数组成,且必须与加密时配置的“toJobConfig.dek”(导入时配置的 数据加密 密钥)一致。如果不一致系统不会报异常,只是解密出来的数据会错误。 fromJobConfig.iv 否 String 解密需要的初始化向量,初始化向量由长度32的十六进制数组成,且必须与加密时配置的“toJobConfig.iv”(导入时配置的初始化向量)一致。如果不一致系统不会报异常,只是解密出来的数据会错误。 fromJobConfig.md5FileSuffix 否 String 校验CDM抽取的文件,是否与源文件一致。
  • 参数说明 HBase/CloudTable作业参数说明 参数 是否必选 类型 说明 fromJobConfig.table 是 String 需要抽取数据的表名,例如“cdm”。 fromJobConfig.columnFamilies 否 String 抽取数据所属的列族。 fromJobConfig.columns 否 String 需要抽取的列,列号之间使用“&”分割,列族与列之间用“:”分隔,例如:“cf1:c1&cf2:c2”。 fromJobConfig.isSplit 否 Boolean 选择是否拆分Rowkey,例如“true”。 fromJobConfig.delimiter 否 String 用于切分Rowkey的分隔符,若不设置则不切分,例如“|”。 fromJobConfig.startTime 否 String 时间区间左边界(包含该值),格式为“yyyy-MM-dd hh:mm:ss”。 表示只抽取该时间及以后的数据。 fromJobConfig.endTime 否 String 时间区间右边界(不包含该值),格式为“yyyy-MM-dd hh:mm:ss”。 表示只抽取该时间以前的数据。 fromJobConfig.formats 否 数据结构 时间格式,请参见fromJobConfig.formats参数说明。 fromJobConfig.formats参数说明 参数 是否必选 类型 说明 name 是 String 列号,例如:“1”。 value 是 String 时间格式,例如:“yyyy-MM-dd”。
  • JSON样例 "from-config-values": { "configs": [ { "inputs": [ { "name": "fromJobConfig.table", "value": "rf_from" }, { "name": "fromJobConfig.columnFamilies", "value": "rowkey&f" }, { "name": "fromJobConfig.columns", "value": "rowkey:rowkey&f:_small" }, { "name": "fromJobConfig.formats", "value": { "f:_date": "yyyy-MM-dd", "f:_timestamp": "yyyy-MM-dd HH:mm:ss" } } ], "name": "fromJobConfig" } ] }
  • 参数说明 HDFS作业参数说明 参数 是否必选 类型 说明 fromJobConfig.inputDirectory 是 String 待抽取数据的路径,例如:“/data_dir”。 fromJobConfig.inputFormat 是 枚举 传输数据时所用的文件格式,目前支持以下文件格式: CSV_FILE:CSV格式。 PARQUET_FILE:PARQUET格式。 BINARY_FILE:二进制格式。 当选择“BINARY_FILE”时,目的端也必须为文件系统。 fromJobConfig.columnList 否 String 需要抽取的列号,列号之间使用“&”分割,并由小到大排序,例如:“1&3&5”。 fromJobConfig.lineSeparator 否 String 文件中的换行符,默认自动识别"\\n"、"\\r"或"\\r\\n"。手动配置特殊字符,如空格回车需使用URL编码后的值。或通过编辑作业json方式配置,无需URL编码。 fromJobConfig.fieldSeparator 否 String 字段分隔符,当文件格式为“CSV_FILE”时此参数有效,默认值为:“,”。 fromJobConfig.quoteChar 否 Boolean 是否使用包围符,选择“true”时,包围符内的字段分隔符会被视为字符串值的一部分,目前CDM默认的包围符为:"。 fromJobConfig.regexSeparator 否 Boolean 是否使用正则表达式分割字段,当文件格式为“CSV_FILE”时此参数有效。 fromJobConfig.encodeType 否 String 编码类型,例如:“UTF_8”或“GBK”。 fromJobConfig.firstRowAsHeader 否 Boolean 是否默认首行为标题行,当文件格式为“CSV_FILE”时此参数有效。在迁移CSV文件到表时,CDM默认是全部写入,当该参数选择“true”时,CDM会将CSV文件的第一行数据作为标题行,不写入目的端的表。 fromJobConfig.fromCompression 否 枚举 压缩格式,表示选择只传输对应压缩格式的源文件。“NONE”表示传输所有格式的文件。 fromJobConfig.compressedFileSuffix 否 String 需要解压缩的文件后缀名。当一批文件中以该值为后缀时,才会执行解压缩操作,否则则保持原样传输。当输入*或为空时,所有文件都会被解压。 fromJobConfig.splitType 否 枚举 指定任务分片方式,选择按文件或文件大小进行分割。HDFS上的文件,如果在HDFS上已经分片,则HDFS每个分片视为一个文件。 FILE:按文件数量进行分片。例如有10个文件,并在任务参数中指定“throttlingConfig.numExtractors”(抽取并发数)为“5”,则每个分片2个文件。 SIZE:按文件大小分割。注意这里不会将文件做切分来实现均衡。例如:有10个文件,9个10M,1个200M,在并发任务数中指定“throttlingConfig.numExtractors”(抽取并发数)为“2”,则会分两个分片,一个处理9个10M的文件,一个处理1个200M的文件。 fromJobConfig.useMarkerFile 否 Boolean 选择是否开启作业标识文件的功能。当源端路径下存在启动作业的标识文件时才启动作业,否则会挂起等待一段时间,等待时长在下方“fromJobConfig.waitTime”(等待时间)参数中配置。 fromJobConfig.markerFile 否 String 启动作业的标识文件名。指定文件后,只有在源端路径下存在该文件的情况下才会运行任务,不指定时默认不启用该功能,例如:“ok.txt”。 fromJobConfig.fileSeparator 否 String “fromJobConfig.inputDirectory”(抽取文件的路径)参数中如果输入的是多个文件路径,CDM使用这里配置的文件分隔符来区分各个文件,默认为“|”。 fromJobConfig.filterType 否 枚举 选择过滤器类型: WILDCARD:输入通配符作为过滤文件,满足过滤条件的路径或文件会被传输。 TIME:时间过滤器,当文件的修改时间晚于输入的时间时,该文件才会被传输。 fromJobConfig.pathFilter 否 String 路径过滤器,过滤类型为通配符时配置,用于过滤文件目录,例如:“*input”。 fromJobConfig.fileFilter 否 String 文件过滤器,过滤类型为通配符时配置,用于过滤目录下的文件,支持配置多个文件,中间使用“,”分隔,例如:“*.csv,*.txt”。 fromJobConfig.startTime 否 String “过滤类型”选择“时间过滤器”时,可以指定一个时间值,当文件的修改时间大于该时间才会被传输,输入的时间格式需为“yyyy-MM-dd HH:mm:ss”。 该参数支持配置为时间宏变量,例如${timestamp(dateformat(yyyy-MM-dd HH:mm:ss,-90,DAY))}表示:只迁移最近90天内的文件。 fromJobConfig.endTime 否 String “过滤类型”选择“时间过滤器”时,可以指定一个时间值,当文件的修改时间小于该时间才会被传输,输入的时间格式需为“yyyy-MM-dd HH:mm:ss”。 该参数支持配置为时间宏变量,例如${timestamp(dateformat(yyyy-MM-dd HH:mm:ss))}表示:只迁移修改时间为当前时间以前的文件。 fromJobConfig.createSnapshot 否 Boolean 如果配置为“true”,CDM读取HDFS系统上的文件时,会先对待迁移的源目录创建快照(不允许对单个文件创建快照),然后CDM迁移快照中的数据。 需要HDFS系统的管理员权限才可以创建快照,CDM作业完成后,快照会被删除。 fromJobConfig.formats 否 数据结构 时间格式,当“fromJobConfig.inputFormat”(文件格式)为“CSV_FILE”(CSV格式),并且文件中有时间类型字段时,才需要输入,具体说明请参见fromJobConfig.formats参数说明。 fromJobConfig.decryption 否 枚举 “fromJobConfig.inputFormat”(文件格式)选择为“BINARY_FILE”(二进制格式)时才有该参数,选择是否对已加密的文件解密后再导出,以及解密方式: NONE:不解密,直接导出文件。 AES-256-GCM:使用AES-256-GCM(NoPadding)算法解密后再导出文件。 fromJobConfig.dek 否 String 数据解密密钥,密钥由长度64的十六进制数组成,且必须与加密时配置的“toJobConfig.dek”(导入时配置的数据加密密钥)一致。如果不一致系统不会报异常,只是解密出来的数据会错误。 fromJobConfig.iv 否 String 解密需要的初始化向量,初始化向量由长度32的十六进制数组成,且必须与加密时配置的“toJobConfig.iv”(导入时配置的初始化向量)一致。如果不一致系统不会报异常,只是解密出来的数据会错误。
  • JSON样例 "from-config-values": { "configs": [ { "inputs": [ { "name": "fromJobConfig.inputDirectory", "value": "/hdfsfrom/from_hdfs_est.csv" }, { "name": "fromJobConfig.inputFormat", "value": "CSV_FILE" }, { "name": "fromJobConfig.columnList", "value": "1" }, { "name": "fromJobConfig.fieldSeparator", "value": "," }, { "name": "fromJobConfig.quoteChar", "value": "false" }, { "name": "fromJobConfig.regexSeparator", "value": "false" }, { "name": "fromJobConfig.firstRowAsHeader", "value": "false" }, { "name": "fromJobConfig.encodeType", "value": "UTF-8" }, { "name": "fromJobConfig.fromCompression", "value": "NONE" }, { "name": "fromJobConfig.compressedFileSuffix", "value": "*" }, { "name": "fromJobConfig.splitType", "value": "FILE" }, { "name": "fromJobConfig.useMarkerFile", "value": "false" }, { "name": "fromJobConfig.fileSeparator", "value": "|" }, { "name": "fromJobConfig.filterType", "value": "NONE" } ], "name": "fromJobConfig" } ] }
  • JSON样例 "from-config-values": { "configs": [ { "inputs": [ { "name": "fromJobConfig.inputDirectory", "value": "http://10.114.196.186:8080/httpfrom/symbol.txt" }, { "name": "fromJobConfig.inputFormat", "value": "BINARY_FILE" }, { "name": "fromJobConfig.fromCompression", "value": "TARGZ" }, { "name": "fromJobConfig.compressedFileSuffix", "value": "*" }, { "name": "fromJobConfig.fileSeparator", "value": "|" } ], "name": "fromJobConfig" } ] }
  • 参数说明 参数 是否必选 类型 说明 fromJobConfig.inputDirectory 是 String 待抽取文件的URL。 用于读取一个公网HTTP/HTTPS URL的文件,包括第三方对象存储的公共读取场景和网盘场景。 fromJobConfig.inputFormat 是 枚举 传输数据时所用的文件格式,目前只支持二进制格式。 fromJobConfig.fromCompression 否 枚举 选择对应压缩格式的源文件进行迁移: NONE:表示传输所有格式的文件。 GZIP:表示只传输GZIP格式的文件。 ZIP:表示只传输ZIP格式的文件。 TAR.GZ:表示只传输TAR.GZ格式的文件。 fromJobConfig.compressedFileSuffix 否 String 需要解压缩的文件后缀名。当一批文件中以该值为后缀时,才会执行解压缩操作,否则则保持原样传输。当输入*或为空时,所有文件都会被解压。 fromJobConfig.fileSeparator 否 String 传输多个文件时,CDM使用这里配置的文件分隔符来区分各个文件,默认为|。 fromJobConfig.useQuery 否 Boolean 该参数设置为“true”时,上传到OBS的对象使用的对象名,为去掉query参数后的字符。 该参数设置为“false”时,上传到OBS的对象使用的对象名,包含query参数。 fromJobConfig.decryption 否 枚举 导出文件时,选择是否对已加密的文件解密后再导出,以及解密方式: NONE:不解密,直接导出文件。 AES-256-GCM:使用AES-256-GCM(NoPadding)算法解密后再导出文件。 fromJobConfig.dek 否 String 数据解密密钥,密钥由长度64的十六进制数组成,且必须与加密时配置的“toJobConfig.dek”(导入时配置的数据加密密钥)一致。如果不一致系统不会报异常,只是解密出来的数据会错误。 fromJobConfig.iv 否 String 解密需要的初始化向量,初始化向量由长度32的十六进制数组成,且必须与加密时配置的“toJobConfig.iv”(导入时配置的初始化向量)一致。如果不一致系统不会报异常,只是解密出来的数据会错误。 fromJobConfig.md5FileSuffix 否 String 校验CDM抽取的文件,是否与源文件一致。
  • JSON样例 "from-config-values": { "configs": [ { "inputs": [ { "name": "fromJobConfig.database", "value": "cdm" }, { "name": "fromJobConfig.collectionName", "value": "rf_from" }, { "name": "fromJobConfig.columnList", "value": "TINYTEST&SMALLTEST&INTTEST&INTEGERTEST&BIGINTTEST&FLOATTEST" }, { "name": "fromJobConfig.isBatchMigration", "value": "false" }, { "name": "fromJobConfig.filters", "value": "{'last_name': 'Smith'}" } ], "name": "fromJobConfig" } ] }
  • JSON样例 "from-config-values": { "configs": [ { "inputs": [ { "name": "fromJobConfig.topicsList", "value": "est1,est2" }, { "name": "fromJobConfig.kafkaConsumerStrategy", "value": "EARLIEST" }, { "name": "fromJobConfig.isPermanency", "value": "true" } ], "name": "fromJobConfig" } ] }
共100000条