正则表达式分隔半结构化文本
在创建表/文件迁移作业时,对简单CSV格式的文件,CDM可以使用字段分隔符进行字段分隔。但是对于一些复杂的半结构化文本,由于字段值也包含了分隔符,所以无法使用分隔符进行字段分隔,此时可以使用正则表达式分隔。
正则表达式参数在源端作业参数中配置,要求源连接为对象存储或者文件系统,且“文件格式”必须选择“CSV格式”。
Log4J日志
- 日志样例:
2018-01-11 08:50:59,001 INFO [org.apache.sqoop.core.SqoopConfiguration.configureClassLoader(SqoopConfiguration.java:251)] Adding jars to current classloader from property: org.apache.sqoop.classpath.extra
- 正则表达式为:
^(\d.*\d) (\w*) \[(.*)\] (\w.*).*
- 解析出的结果如下:
表1 Log4J日志解析结果 列号
样值
1
2018-01-11 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
Log4J审计日志
- 日志样例:
2018-01-11 08:51:06,156 INFO [org.apache.sqoop.audit.FileAuditLogger.logAuditEvent(FileAuditLogger.java:61)] user=sqoop.anonymous.user ip=189.xxx.xxx.75 op=show obj=version objId=x
- 正则表达式为:
^(\d.*\d) (\w*) \[(.*)\] user=(\w.*) ip=(\w.*) op=(\w.*) obj=(\w.*) objId=(.*).*
- 解析结果如下:
表2 Log4J审计日志解析结果 列号
样值
1
2018-01-11 08:51:06,156
2
INFO
3
org.apache.sqoop.audit.FileAuditLogger.logAuditEvent(FileAuditLogger.java:61)
4
sqoop.anonymous.user
5
189.xxx.xxx.75
6
show
7
version
8
x
Tomcat日志
- 日志样例:
11-Jan-2018 09:00:06.907 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
- 正则表达式为:
^(\d.*\d) (\w*) \[(.*)\] ([\w\.]*) (\w.*).*
- 解析结果如下:
表3 Tomcat日志解析结果 列号
样值
1
11-Jan-2018 09:00:06.907
2
INFO
3
main
4
org.apache.catalina.startup.VersionLoggerListener.log
5
OS Name:Linux
Django日志
- 日志样例:
[08/Jan/2018 20:59:07 ] settings INFO Welcome to Hue 3.9.0
- 正则表达式为:
^\[(.*)\] (\w*) (\w*) (.*).*
- 解析结果如下:
表4 Django日志解析结果 列号
样值
1
08/Jan/2018 20:59:07
2
settings
3
INFO
4
Welcome to Hue 3.9.0
Apache server日志
- 日志样例:
[Mon Jan 08 20:43:51.854334 2018] [mpm_event:notice] [pid 36465:tid 140557517657856] AH00489: Apache/2.4.12 (Unix) OpenSSL/1.0.1t configured -- resuming normal operations
- 正则表达式为:
^\[(.*)\] \[(.*)\] \[(.*)\] (.*).*
- 解析结果如下:
表5 Apache server日志解析结果 列号
样值
1
Mon Jan 08 20:43:51.854334 2018
2
mpm_event:notice
3
pid 36465:tid 140557517657856
4
AH00489: Apache/2.4.12 (Unix) OpenSSL/1.0.1t configured -- resuming normal operations