pig中getyear()的日期格式应该是什么

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

我正在尝试使用pig内置的日期函数。
输入文件中包含日期 yyyy-mm-dd hh:mi:ss 格式。
我正在尝试使用以下代码:

row = foreach log generate FLATTEN(REGEX_EXTRACT_ALL (pattern) AS (date_time : datetime, other columns);

final_data = foreach row {
  yyyy = (chararray)GetYear(date_time);
  mm = (chararray)GetMonth(date_time);
  dd = (chararray)GetDay(date_time);
  hh = (chararray)GetHour(date_time);
  mi = (chararray)GetMinute(date_time);
  ss = (chararray)GetSecond(date_time);
  generate CONCAT(CONCAT(CONCAT(yyyy, '-'), CONCAT(mm, '-')),dd) as myDate;
  }

但我有个错误:

ERROR 1066: Unable to open iterator for alias final_data. Backend error : java.lang.String cannot be cast to org.joda.time.DateTime

我正在尝试在generate语句中使用变通方法from:formattingdate
需要什么格式?

5tmbdcev

5tmbdcev1#

regex\u extract\u全部接受一个字符串并返回一个包含提取字符串的元组,即不能提取到 DateTime 领域。
您可以对加载的日期字符串使用todate自定义项:
例如:

cat data.txt
2014-03-11 13:44:11
2014-02-22 10:44:11

A = load 'data.txt' as (in:chararray);
B = foreach A generate ToDate(in,'yyyy-MM-dd HH:mm:ss') as (dt:DateTime);
C = foreach B {
      year = (chararray)GetYear(dt);
      month = (chararray)GetMonth(dt);
      day = (chararray)GetDay(dt);
      generate CONCAT(CONCAT(CONCAT(year, ''), CONCAT(month, '-')),day) as myDate;
};
dump M;
(2014-3-11)
(2014-2-22)

相关问题