【发布时间】:2014-04-25 21:02:57
【问题描述】:
我有几个文件,每个文件有 250k 行。 我正在尝试加载它们:
apache_log = LOAD 'apache_log/httpd-www02-access.log.2014-03-17-16*' USING TextLoader AS (line:chararray);
apache_row = FOREACH apache_log GENERATE FLATTEN (
REGEX_EXTRACT_ALL
(line,'^".*?([\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}]*)" \\[(\\d{2}\\/\\w+\\/\\d{4}:\\d{2}:\\d{2}:\\d{2} \\+\\d{4})] (\\S+) (\\S+) "(.+?)" (\\S+) (\\S+) "([^"]*)" "(.*)" "(.*)"'))
AS (ip: chararray, datetime: chararray, session_id: chararray, time_of_request:chararray, request: chararray, status: chararray, size: chararray, referer : chararray, cookie: chararray, user_agent: chararray);
为确保获得所需的列数:
apache_row_good = FILTER apache_row by ARITY(*) == 10;
最后我试图将它存储到 HCat 中:
store apache_row_good into 'apache_log' using org.apache.hcatalog.pig.HCatStorer();
在最终表中有列:
ip
datetime
session_id
time_of_request
request
status
size
referer
cookie
user_agent
以上所有列都是string类型。
我得到一个错误:
Input(s):
Failed to read data from "hdfs://hadoop1:8020/apache_log/httpd-www02-access.log.2014-03-17-16*"
Output(s):
Failed to produce result in "stage.atg_apache_log"
Counters:
Total records written : 0
Total bytes written : 0
Spillable Memory Manager spill count : 0
Total bags proactively spilled: 0
Total records proactively spilled: 0
Job DAG:
job_201403071023_0027
很明显,我的文件中有些行不适合我的 REGEXP。
但哪些?
如何追踪它?
请注意,我已成功加载许多类似(不同日期)的文件
我将不胜感激任何建议,因为我卡住了我不喜欢检查文件中的每一行...
问候
帕维尔
【问题讨论】:
-
"显然我的文件中有一些行不适合我的 REGEXP。"为什么这很明显?您发布的错误是 Pig 作业失败时的通用输出。我要做的第一件事是使用 JobTracker 检查失败的日志,并查看有关单个失败任务尝试的错误消息。
-
@WinnieNicklaus - 我在哪里可以找到有关工作/任务的详细信息?我可以看到:FailedCount:1. LastFailedTask:task_201403071023_0028_m_000000。我在哪里可以找到任何日志?
标签: regex hadoop load apache-pig