Hadoop Informatica 日志处理
Hadoop Informatica Log processing
我正在从事一个项目,涉及从相当大的 Informatica 日志文件创建一组可查询的数据。为此,使用 Flume 将文件导入到 Hadoop 集群中,该集群在我开始此项目之前已由同事配置。我的工作是根据日志中包含的数据创建一个 table,以便可以轻松执行查询。我遇到的问题与日志文件格式有关。日志的格式为:
时间戳:严重性:(Pid | 线程):(服务类型 | 服务名称):客户端节点:消息代码:消息
问题是有时消息字段包含额外的冒号分隔注释,例如消息可能是 [ x : y : z ]。使用 HCatalog 创建 table 时,我无法解释这种行为,而是会产生额外的列。
有什么建议吗?通常我会使用 Ruby 来分隔字段或替换分隔符以在使用 HCatalog 导入时保持完整性。是否有一些预处理我可以做集群端允许我这样做?文件太大,无法在本地处理。
答案是使用 pig 脚本和 Python UDF。 pig 脚本加载到文件中,然后逐行调用 Python 脚本以正确分隔字段。然后可以将结果写入更友好的 CSV and/or 存储在 table.
中
我正在从事一个项目,涉及从相当大的 Informatica 日志文件创建一组可查询的数据。为此,使用 Flume 将文件导入到 Hadoop 集群中,该集群在我开始此项目之前已由同事配置。我的工作是根据日志中包含的数据创建一个 table,以便可以轻松执行查询。我遇到的问题与日志文件格式有关。日志的格式为:
时间戳:严重性:(Pid | 线程):(服务类型 | 服务名称):客户端节点:消息代码:消息
问题是有时消息字段包含额外的冒号分隔注释,例如消息可能是 [ x : y : z ]。使用 HCatalog 创建 table 时,我无法解释这种行为,而是会产生额外的列。
有什么建议吗?通常我会使用 Ruby 来分隔字段或替换分隔符以在使用 HCatalog 导入时保持完整性。是否有一些预处理我可以做集群端允许我这样做?文件太大,无法在本地处理。
答案是使用 pig 脚本和 Python UDF。 pig 脚本加载到文件中,然后逐行调用 Python 脚本以正确分隔字段。然后可以将结果写入更友好的 CSV and/or 存储在 table.
中