conevrt chararray在pig中添加日期和持续时间

siv3szwd  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(233)

我是新来的 Pig 我有一个500kb的测试数据样本,我需要将它乘以几倍,以使文件的大小更大。我的数据中的单行如下:

(   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 功能,但在试图转换 chararraydate ,我面临与格式相关的问题,无法理解解决方案。
有人能指引吗?

holgip5t

holgip5t1#

在检查了可以调用 ToDate ,当前正在调用 ToDate 作为:

ToDate(milliseconds)
ToDate(iosstring)

您的格式不是以毫秒为单位的,也不遵循iso8601格式。你应该像这样调用它:

ToDate(userstring, format)

哪里 format 是遵循这些规则的模式字符串。
因此, 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格式的字符串。请务必阅读链接,以便正确格式化字符串。

相关问题