【问题标题】:How to find the line in the input file that caused an error - PigLatin?如何在输入文件中找到导致错误的行 - PigLatin?
【发布时间】: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


【解决方案1】:

常见的 Hadoop 发行版为 JobTracker 和 TaskTracker 提供“人工”网络界面。

这是它的样子,尤其是对于 Hadoop 1.xx:Amazon Elastic MapReduce docs - 找出“查看任务日志”部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-27
    • 2012-08-31
    • 2012-04-05
    • 2011-05-19
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多