正則表達式分隔半結構化文本
更新時間 2023-06-07 16:51:14
最近更新時間: 2023-06-07 16:51:14
分享文章
本章節主要介紹正則表達式分隔半結構化文本。
在創建表/文件遷移作業時,對簡單CSV格式的文件,CDM可以使用字段分隔符進行字段分隔。但是對于一些復雜的半結構化文本,由于字段值也包含了分隔符,所以無法使用分隔符進行字段分隔,此時可以使用正則表達式分隔。
正則表達式參數在源端作業參數中配置,要求源連接為對象存儲或者文件系統,且“文件格式”必須選擇“CSV格式”。
圖 正則表達式參數

在遷移CSV格式的文件時,CDM支持使用正則表達式分隔字段,并按照解析后的結果寫入目的端。正則表達式語法請參考對應的相關資料,這里舉例下面幾種日志文件的正則表達式的寫法:
- Log4J日志
- Log4J審計日志
- Tomcat日志
- Django日志
- Apache server日志
Log4J日志
- 日志樣例:
2018-01-11 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 | 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=(. ).*
- 解析結果如下:
表 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.).
- 解析結果如下:
表 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 ) (.).
- 解析結果如下:
表 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
- 正則表達式為:
^[(. )][(. )] [(. )] (. ).*
- 解析結果如下:
表 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 |