预处理配置¶
本文介绍将数据导入悦数图数据库开发版时可选的数据预处理配置。
配置示例¶
sources: [
{
// type:"hdfs"
// format:"csv"
// header:false
// separator:","
// path: "hdfs://127.0.0.1:9000/import_movie/sub_movie.csv"
pre_processes: {
concat: [
{
oldFields: [a, b]
newField: "ab"
splicer: "_"
}
]
separate: [
{
oldField: "aaa"
newFields: [a, b]
sep: "&"
}
]
filter: ["age>=10 AND firstName=='Tom' OR lastName!='Li'", "aa>='ss'"]
concatConstant: [
{
field: "name"
prefixValue: "test_"
suffixValue: "_test"
}
]
newConstantColumn: [
{
field: "newColumn"
value: "AAA"
}
]
nonValue: ""
udfSql: "select * from $exchange"
}
// nodetypes: []
// edgetypes: []
}
]
配置项¶
| 选项 | 描述 | 类型 | 是否必选 | 默认值 |
|---|---|---|---|---|
pre_processes.concat |
将多个字段连接为一个新字段。 | List | 否 | 无 |
pre_processes.concat.oldFields |
要连接的旧字段列表。 | List | 否 | 无 |
pre_processes.concat.newField |
连接后创建的新字段的名称。 | String | 否 | 无 |
pre_processes.concat.splicer |
用于连接旧字段的拼接符。 | String | 否 | 无 |
pre_processes.separate |
将一个字段分割为多个字段。 | List | 否 | 无 |
pre_processes.separate.oldField |
要分割的旧字段的名称。 | String | 否 | 无 |
pre_processes.separate.newFields |
分割后创建的新字段列表。 | List | 否 | 无 |
pre_processes.separate.sep |
用于分割旧字段的分隔符。 | String | 否 | 无 |
pre_processes.filter |
过滤数据的条件。过滤条件中的字符串值必须用英文单引号括起来。 | List |
否 | 无 |
pre_processes.concatConstant |
将字段与常量连接。 | List | 否 | 无 |
pre_processes.concatConstant.field |
要与常量连接的字段名称。 | String | 否 | 无 |
pre_processes.concatConstant.prefixValue |
作为前缀的常量值。 | String | 否 | 无 |
pre_processes.concatConstant.suffixValue |
作为后缀的常量值。 | String | 否 | 无 |
pre_processes.newConstantColumn |
添加新的常量字段。 | List | 否 | 无 |
pre_processes.newConstantColumn.field |
新字段的名称。 | String | 否 | 无 |
pre_processes.newConstantColumn.value |
新字段的常量值。 | String | 否 | 无 |
pre_processes.nonValue |
用于替换 NULL 值的值。 | String | 否 | 无 |
pre_processes.udfSql |
用于数据预处理的 Spark SQL 语句。此语句必须遵循格式select <custom_statement> from $exchange <custom_statement>,其中<custom_statement>是自定义的 SQL 语句。例如,select LENGTH(ab) as ab, REVERSE(newColumn) as newColumn from $exchange。若要查看常用的 SQL 操作,请参见 SQL 参考。 |
String | No | N/A |
预处理顺序¶
若设置了所有配置项,则按照以下顺序执行:concat->separate->filter->concatConstant->newConstantColumn->nonValue->udfSql。
SQL 参考¶
悦数数据迁移支持使用 Spark SQL 在数据导入时进行数据处理。本章节列举了常用的 SQL 操作供您参考。
Note
所有 SQL 语句必须遵循格式select <custom_statement> from $exchange <custom_statement>,其中<custom_statement>是自定义的 SQL 语句。
| 运算符/函数 | 示例 | 描述 |
|---|---|---|
current_timestamp |
select *, current_timestamp as current_time from $exchange |
添加一个名为current_time的新字段,并将其值设置为当前时间戳。 |
current_date |
select *, current_date as current_date from $exchange |
添加一个名为current_date的新字段,并将其值设置为当前日期。 |
least和greatest |
select *, least(col1,col2) as new_col from $exchange |
添加一个名为new_col的新字段,并将其值设置为col1和col2中较小的值。 |
=、!=、>、<、>=、<=、<> |
select * from $exchange where col1='abc' |
过滤出col1的值为abc的行。 |
IS NULL、IS NOT NULL |
select * from $exchange where col1 IS NULL |
过滤出col1的值为NULL的行。 |
LIKE、NOT LIKE |
select * from $exchange where col1 LIKE '%abc%' |
过滤出col1的值包含abc的行。 |
LIKE ALL、NOT LIKE ALL |
select * from $exchange where col1 LIKE ALL('%abc%','%ABC%') |
过滤出col1的值同时包含abc和ABC的行。 |
LIKE ANY、NOT LIKE ANY |
select * from $exchange where col1 LIKE ANY('%abc%','ABC%') |
过滤出col1的值包含abc或以ABC开头的行。 |
AND、OR |
select * from $exchange where col1<10 AND col2>20 |
过滤出col1的值小于10且col2的值大于20的行。 |
NVL |
select *, NVL(col1, 10) as new_col from $exchange |
添加一个名为new_col的新字段,并在col1的值不为NULL时将其值设置为col1的值;否则将其值设置为10。 |
COALESCE |
select *, COALESCE(col1,col2) as new_col from $exchange |
添加一个名为new_col的新字段,并在col1的值不为NULL时将其值设置为col1的值;否则将其值设置为col2的值。 |
LENGTH |
select *, LENGTH(col1) as new_col from $exchange |
添加一个名为new_col的新字段,并将其值设置为col1的值的长度。 |
CONCAT |
select *, CONCAT(col1,'abc') as new_col from $exchange |
添加一个名为new_col的新字段,并将其值设置为col1的值和abc的拼接。 |
REVERSE |
select *, REVERSE(col1) as new_col from $exchange |
添加一个名为new_col的新字段,并将其值设置为col1的值的反转。 |
LEFT、RIGHT |
select *, LEFT(col1,2) as new_col from $exchange |
添加一个名为new_col的新字段,并将其值设置为col1的值的前两个字符。 |
SUBSTR |
select *, SUBSTR(col1,2,3) as new_col from $exchange |
添加一个名为new_col的新字段,并将其值设置为col1的值的子字符串。该字符串从第二个字符开始,长度为3。 |
UPPER、LOWER |
select *, UPPER(col1) as new_col from $exchange |
添加一个名为new_col的新字段,并将其值设置为col1的值的大写形式。 |
REGEXP_REPLACE |
select *, REGEXP_REPLACE(col1,'a','b') as new_col from $exchange |
添加一个名为new_col的新字段,并将其值设置为col1的值中所有a替换为b后的结果。 |
关于 Spark SQL 的更多信息,请参见 Spark SQL 文档。