蜂巢简单的正则表达式

时间:2018-07-31 08:06:23

标签: sql hadoop hive

我正在尝试检查列中的所有数据是否都具有有效日期。

create table dates (tm string, dt string) row format delimited fields terminated by '\t'

date.txt(sample data)
20181205    15
20171023    23
20170516    16

load data local inpath 'dates.txt' overwrite into table dates;

create temporary macro isitDate(s string)
case when regexp_extract(s,'((0[1-9]|[12][0-9]|3[01])',0) = '' 
     then false 
     else true 
end;

select * from dates where isitDate(dt);

但是select语句给出了以下错误-

  

失败,例外   java.io.IOException:org.apache.hadoop.hive.ql.metadata.HiveException:   无法执行方法public java.lang.String   org.apache.hadoop.hive.ql.udf.UDFRegExpExtract.evaluate(java.lang.String,java.lang.String,java.lang.Integer)   在以下对象的对象org.apache.hadoop.hive.ql.udf.UDFRegExpExtract@66b45e1e   带有参数的org.apache.hadoop.hive.ql.udf.UDFRegExpExtract类   {15:java.lang.String,(((0 [1-9] | [12] [0-9] | 3 [01]):java.lang.String,   0:java.lang.Integer},大小为3

我的正则表达式有问题吗

1 个答案:

答案 0 :(得分:0)

犯了一个愚蠢的错误,宏中有一个额外的开括号