正在将数据加载到Pig中,日期转换错误

时间:2018-08-22 12:32:34

标签: datetime hadoop apache-pig

我有一个名为campaigndata.csv的数据。它有272列。第272列是日期。在Pig中加载数据时,我遇到时间转换错误。

在272列输入数据:

Wed, 09/29/10 03:52 PM

猪脚本:

     -To load data in Pig
    REGISTER /home/hduser/pigghduserybank.jar;
    DEFINE CSVLoader org.apache.pig.piggybank.storage.CSVLoader();

    data0 = load 'campaigndata/CampaignData.csv' using CSVLoader;
    data1 = filter data0 by $0 != 'CLICK_FLG';
    data2 = foreach data1 generate ($0 == 'N' ? 0:1), ($1 == 'N' ? 0:1), $2..$271, ToDate($272,'EEE, MM/dd/yyyy hh:mm a');
dump data2;

我遇到了

之类的错误

enter image description here

我希望日期格式为“ day”,“ mm / dd / yyyy”,“ hh:mm”,“ am / pm”。然后只有我可以使用其他的猪脚本。

1 个答案:

答案 0 :(得分:0)

错误是因为您在第273列上使用ToDate。如果您的输入文件有272列,则在Pig中,您可以使用从$ 0到$ 271的位置表示法来访问它们。还请注意年份是'yy'格式而不是' yyyy'

data2 = foreach data1 generate ($0 == 'N' ? 0:1), ($1 == 'N' ? 0:1), $2..$270, ToDate($271,'EEE, MM/dd/yy hh:mm a');