正则表达式分隔半结构化文本 本章节主要介绍正则表达式分隔半结构化文本。 在创建表/文件迁移作业时,对简单CSV格式的文件,CDM可以使用字段分隔符进行字段分隔。但是对于一些复杂的半结构化文本,由于字段值也包含了分隔符,所以无法使用分隔符进行字段分隔,此时可以使用正则表达式分隔。 正则表达式参数在源端作业参数中配置,要求源连接为对象存储或者文件系统,且“文件格式”必须选择“CSV格式”。 图 正则表达式参数 在迁移CSV格式的文件时,CDM支持使用正则表达式分隔字段,并按照解析后的结果写入目的端。正则表达式语法请参考对应的相关资料,这里举例下面几种日志文件的正则表达式的写法: Log4J日志 Log4J审计日志 Tomcat日志 Django日志 Apache server日志 Log4J日志 日志样例: 20180111 08:50:59,001 INFO [org.apache.sqoop.core.SqoopConfiguration.configureClassLoader(SqoopConfigurati on.java:251)] Adding jars to current classloader from property: 正则表达式为: ^(d. d)(w ) [(. )] (w. ). 解析出的结果如下: 表 Log4J日志解析结果 列号 样值 1 20180111 08:50:59,001 2 INFO 3 org.apache.sqoop.core.SqoopConfiguration.configureClassLoader(SqoopConfiguration.java:251) 4 Adding jars to current classloader from property: org.apache.sqoop.classpath.extra