在pig中加载数据,日期转换出错

zxlwwiss  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(448)

我有名为campaigndata.csv的数据。它有272列。第272列是日期。在pig中加载数据时,出现时间转换错误。
在272列输入数据:

Wed, 09/29/10 03:52 PM

Pig脚本:

-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;

我犯了这样的错误

我希望日期格式为“日”“mm/dd/yyyy”“hh:mm”“am/pm”。那就只有我可以用来写Pig的剧本了。

js4nwp54

js4nwp541#

错误是因为您在第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');

相关问题