gpt4 book ai didi

regex - 如何在输入文件中找到导致错误的行 - PigLatin?

转载 作者:可可西里 更新时间:2023-11-01 14:24:03 26 4
gpt4 key购买 nike

我有一个文件,每个文件有 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

以上列均为字符串类型。

我得到一个错误:

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。
但是哪些呢?
我如何追踪它?
请注意,我已成功加载许多相似(不同日期)的文件
我将不胜感激任何建议,因为我被卡住了我不会像检查文件中的每一行那样填写...

问候
帕维尔

最佳答案

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

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

关于regex - 如何在输入文件中找到导致错误的行 - PigLatin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22508896/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com