Apache Pig不会将字符串解析为int / long

时间:2012-08-20 17:04:11

标签: hadoop apache-pig cloudera

我是猪的新手,我正在尝试对包含如下所示事件的文件执行一些基本分析:

1345477765  2012-08-20  08:49:24    servername  12.34.56.78 192.168.1.4 joebloggs   ManageSystem    Here's your message

我尝试按如下方式加载文件:

logs = LOAD '/path/to/file' using PigStorage AS (loggedtime:long, serverdate:chararray, servertime:chararray, servername:chararray, externalip:chararray, internalip:chararray, username:chararray, systemtype:chararray,  message:chararray);

当我说明日志时,一切看起来都不错:

     Illustrate logs
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    | logs     | loggedtime:long      | serverdate:chararray    | servertime:chararray    | servername:chararray    | externalip:chararray        | internalip:chararray      | username:chararray    | systemtype:chararray            | message:chararray                                                                                                                         | 
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    |          | 1345477765 | 2012-08-20   | 08:49:24       | servername | 12.34.56.78 | 192.168.1.4 | joebloggs   | ManageSystem | Here's your message  | 
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

此外,当描述它们时,一切都如我所料:

logs: {loggedtime: long,serverdate: chararray,servertime: chararray,servername: chararray,externalip: chararray,internalip: chararray,username: chararray,systemtype: chararray,message: chararray}

但是,当我转储日志时,不包括记录时间。

dump logs;
(,2012-08-20,08:49:24,servername,12.34.56.78,192.168.1.4,joebloggs,ManageSystem,Here's your message)

据推测,我的过滤器不会返回任何事件:

specificlog = FILTER logs BY loggedtime == 1345477765;

希望我在这里错过了一些简单的东西。

1 个答案:

答案 0 :(得分:2)

我最终自己想出来了。为了解析很久,我不得不在数字的末尾添加一个“L”。

e.g。通过将我的源数据更改为以下内容,我能够将其工作。

1345477765L  2012-08-20  08:49:24    servername  12.34.56.78 192.168.1.4 joebloggs   ManageSystem    Here's your message

希望这可以帮助有同样问题的人。

相关问题