【问题标题】:Pig Help: Splitting a Field into Multiple FieldsPig 帮助:将一个字段拆分为多个字段
【发布时间】:2016-03-08 05:34:31
【问题描述】:

嗨,我第一次和 Pig 一起玩,很好奇如何处理将一个字段拆分为多个其他字段的问题。

我有一个包,A,如下所示:

grunt> Dump A; 

(text, text, Mon Mar 07 12:00:00 CDT 2016)

我想做的是将日期时间字段拆分为多个字段,以便我可以探索数据集的分布并按星期几、月份、年份等进行分组。

我一直在研究 tokenize,但不确定这是否满足我的需求,因为我需要/想要将字段名称添加到包中或创建嵌套包。

有什么想法吗?

【问题讨论】:

    标签: hadoop apache-pig


    【解决方案1】:

    假设该值已经是日期时间数据类型,那么您可以使用以下函数来提取单个元素。内置函数参考DateTime Functions in PIG

    B = FOREACH A GENERATE f1,f2,
                          GetDay(f3) as f3_Day,
                          GetMonth(f3) as f3_Month,
                          GetYear(f3) as f3_Year,
                          GetHour(f3) as f3_Hour,
                          GetMinute(f3) as f3_Minute,
                          GetSecond(f3) as f3_Second;
    

    如果数据类型是 chararray 则使用 ToDate() 函数将其转换为日期时间并提取日期部分。

    B = FOREACH A GENERATE f1,f2,ToDate(f3,'choose your datetime format') as f3_Date;
    C = FOREACH B GENERATE f1,f2,
                          GetDay(f3_Date) as f3_Day,
                          GetMonth(f3_Date) as f3_Month,
                          GetYear(f3_Date) as f3_Year,
                          GetHour(f3_Date) as f3_Hour,
                          GetMinute(f3_Date) as f3_Minute,
                          GetSecond(f3_Date) as f3_Second;
    

    【讨论】:

      猜你喜欢
      • 2016-07-25
      • 1970-01-01
      • 1970-01-01
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      相关资源
      最近更新 更多