我是Pig
的新手,我有一个500 KB的样本测试数据,我需要多次乘以使文件大小更大以用于某些测试目的。我的数据中的单行如下:
( card_description:chararray,
transaction_date:chararray,
merchant_name:chararray,
merchant_city:chararray,
transaction_amount:float
) ;
我想简单地多次更改每行的transaction_amount
和transaction_date
,然后将所有结果合并为一个大文件。
我一直试图改变transaction_date
文件中的日期值为
27/05/2010 00:00
r1 = FOREACH data GENERATE card_description,ToDate(transaction_date),merchant_name,merchant_city,
ROUND(RANDOM()*5)*transaction_amount;
result =union data,r1;
为了更改交易日期,我想使用AddDuration
功能,但在尝试将chararray
转换为date
时,我面临与格式相关的问题,无法理解解决方案。
有人可以指导吗?
答案 0 :(得分:2)
在查看调用ToDate
的方式后,您当前正在调用ToDate
:
ToDate(milliseconds)
ToDate(iosstring)
您的格式不是以毫秒为单位,也不是ISO 8601 format。您应该像以下一样调用它:
ToDate(userstring, format)
format
是these rules后的模式字符串。
因此,ToDate
应该被称为:
-- For a 12hr clock
ToDate(transaction_date, "yyyy/MM/dd hh:mm")
-- For a 24hr clock
ToDate(transaction_date, "yyyy/MM/dd HH:mm")
对于AddDuration
,请记住您提供给它的第二个参数必须是ISO 8601 format中的字符串。请务必阅读链接,以便正确格式化字符串。