标题开头\u0001 (SOH) %01
2. 字段分隔符
– 数据库、NoSQL导出到CSV文件(“使用包围符”在目的端):当源端某列 数据的字符串中出现字段分隔符时,目的端可以通过开启“使用包围符”,
– CSV文件导出到数据库、NoSQL(“使用包围符”在源端):CSV文件为源的 时候,并且其中数据是被包围符括起来的,如果想把数据正确的导入到数据
这时可以在目的端指定该参数,这样会生成多个指定大小的CSV文件,避免导出 的文件过大。该参数的数据类型为整型,单位为MB。
JSON 格式
这里主要介绍JSON文件格式的以下内容:
●
CDM支持解析的JSON类型
●
记录节点
●
从JSON文件复制数据
1. CDM支持解析的JSON类型:JSON对象、JSON数组。
– JSON对象:JSON文件包含单个对象,或者以行分隔/串连的多个对象。
i. 单一对象JSON:
ii. 行分隔的JSON对象:
{"took" : 188, "timed_out" : false, "total" : 1000003, "max_score" : 1.0 } {"took" : 189, "timed_out" : false, "total" : 1000004, "max_score" : 1.0 }
iii. 串连的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,
a. 示例一:从行分隔/串连的多个对象中提取数据。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,
took timedOut total maxScore
190 false 1000001 1.0
191 false 1000002 1.0
192 false 1000003 1.0
b. 示例二:从记录节点中提取数据。JSON文件包含了单个的JSON对象,但是 其中有效的数据在一个数据节点下,例如:
{ "took": 190, "timed_out": false, "hits": {
ID SourceName SourceBooks
650612 tom ["chinese","english","math"]
650616 tom ["chinese","english","math"]
650618 tom ["chinese","english","math"]
c. 示例三:从JSON数组中提取数据。JSON文件是包含了多个JSON对象的JSON 数组,例如:
took timedOut total maxScore
190 false 1000001 1.0
191 false 1000002 1.0
d. 示例四:在解析JSON文件的时候搭配转换器。在示例二前提下,想要把 hits.max_score字段附加到所有记录中,即以如下格式写入到数据库中:
ID SourceNam
e SourceBooks MaxScore
650612 tom ["chinese","english","math"] 1.0
650616 tom ["chinese","english","math
"] 1.0
650618 tom ["chinese","english","math
"] 1.0
则需要在作业第一步指定文件格式为“JSON格式”,指定JSON类型为
“JSON对象”,并且指定记录节点为“hits.hits”,然后在作业第二步添加 转换器,操作步骤如下:
i. 单击 添加字段,新增一个字段。
图
1-30 添加字段
ii. 在添加的新字段后面,单击 添加字段转换器。
图
1-31 添加字段转换器
iii. 创建“表达式转换”的转换器,表达式输入”1.0”,然后保存。
图
1-32 配置字段转换器
另外,可以设置超时时间,在超时时间内,CDM会周期去查询标识文件是否存
1. 数据库的数据导出到CSV文件,由于数据中含有分隔符逗号,造成导出的CSV文件 中数据混乱。 出到CSV格式的文件中,然后再使用CDM将导出的CSV文件导入到MRS HBase,
发现导出的CSV文件中出现了数据被截断的情况。
解决方法:指定换行符。
在使用CDM将MySQL的表数据导出到CSV文件时,指定目的端的换行符为
“%01”(确保这个值不会出现在字段值中),这样导出的CSV文件中换行符就 是“%01”。然后再使用CDM将CSV文件导入到MRS HBase时,指定源端的换行 符为“%01”,这样就避免了数据被截断的问题。