我有以下格式的数据:
isotimestamp source service info serviceid msg hostname requsetid
2013-08-22T13:23:18.226220+01:00 indiana service2q info 255 " processing
request " host1 e2cerd22
我能够通过 UDF 将 ISO 时间戳转换为日期时间。消息由空格分隔,消息的长度不是恒定的。当我尝试通过pig-storage('')
(因为消息位由空格分隔)加载数据时,它正在检索下一位消息作为其他列数据。
在上面的示例中,如果我生成主机名,它会给我消息的请求位。是否有任何特定的方法来处理 Pig 中的 MAP 等数据?我尝试使用TO-MAP
但未能实现所需的地图转换。
tomapdata = FOREACH data GENERATE myudf.test(dt)as date,
TOMAP(source,service,info,serviceid,msg,hostname,requestid)as m;
getdata = FOREACH tomapdata GENERATE dt, m#hostname, m#serviceid;
是否可以将日期chararray
和数据的剩余部分作为地图加载?
load 'data.log' as (dt:chararray , m:MAP[chararray] );
Foreach data generate m#source ;
问题 :
任何人都可以指导我将数据加载为猪中的 MAP 吗?
谁能提供一些关于在 Pig 中将数据加载/处理为 MAP 的建议?
**必填地图:
source#indiana
service#service2q
msg#"processing request"
hostname#host1
requestid#ec2cerd22**