【问题标题】:Extracting substring from a string in Hive从 Hive 中的字符串中提取子字符串
【发布时间】:2014-04-04 05:17:01
【问题描述】:

我有一个日期列。日期格式为 M/d/yyyy hh:mm:ssMM/d/yyyy hh:mm:ssM/dd/yyyy hh:mm:ssMM/dd/yyyy hh:mm:ss 我想将这些日期转换为yyyy-MM-dd 格式。如何在 Hive 中实现它?

【问题讨论】:

    标签: string text substring hive extract


    【解决方案1】:

    您需要为此编写自定义 UDF,以读取该列,查找数据中存在的日期格式,然后将其转换为所需格式。 您可以使用SimpleDateFormat 来解析和转换日期列。您可以参考此链接编写自定义 UDF:link

    【讨论】:

      【解决方案2】:

      在 Eclipse 中创建一个项目并编写一个如下所示的类:

      package com.custom.udf;
      
      import java.text.SimpleDateFormat;
      import java.util.Date;
      
      import org.apache.hadoop.hive.ql.exec.UDF;
      import org.apache.hadoop.io.Text;
      
      public class CustomDateValidator extends UDF{
      
          public static void main(String[] args) {
              System.out.println("This is a Custom Date Validator class");
          }
      
          public String evaluate(String dateText) {
              if (null == dateText) {
                  return null;
              } else {
                  return toDate(dateText);
              }
          }
      
          public String toDate(String d) {
              SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss");
              Date dt = new Date(d);
              SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      
              return sf.format(new Date(sdf.format(dt)));
          }
      
      }
      

      evaluate 方法需要添加到 udf 工作中。 在构建路径中添加 `hive-exec-0.12.0.jar`。 使用 eclipse 创建一个 DateConvertor.jar。

      在 hive add jar <location/DateConvertor.jar> 中添加这个 jar。 在 hive 提示符下使用以下命令创建函数:

      create temporary function customdate as 'com.custom.udf.CustomDateValidator';
      

      现在假设您想将此函数用于 sql 命令,然后在 hive 提示符下使用以下查询:

      select customdate(time) from employee;
      

      就是这样,这对你有帮助。

      【讨论】:

      • 谢谢!它有帮助
      • @Jigy:如果有帮助,请接受答案
      猜你喜欢
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-29
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多