使用pyspark搜索hive中的日期是否相等

taor4pac  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(295)

我在源数据中有多种日期格式,我正在尝试将它们转换为类似的格式。
我尝试了下面的代码,但它不工作。 df.createOrReplaceTempView("df") sqlContext.sql("select decode(V2_EVENT_DATE, is_date(V2_EVENT_DATE,'mm/dd/yy'),to_date(V2_EVENT_DATE,'mm/dd/yy'), is_date(V2_EVENT_DATE,'month dd,yyyy'),to_date(V2_EVENT_DATE,'month dd,yyyy'), is_date(V2_EVENT_DATE,'dd month,yyyy'),to_date(V2_EVENT_DATE,'dd month,yyyy'), is_date(V2_EVENT_DATE,'mm/dd/yyyy'),to_date(V2_EVENT_DATE,'mm/dd/yyyy'), is_date(V2_EVENT_DATE,'dd/mm/yyyy'),to_date(V2_EVENT_DATE,'dd/mm/yyyy'), is_date(V2_EVENT_DATE,'dd month yyyy'),to_date(V2_EVENT_DATE,'dd month yyyy'), is_date(V2_EVENT_DATE,'yyyy'),to_date(V2_EVENT_DATE||'/12/31','yyyy/mm/dd'), is_date(V2_EVENT_DATE,'dd month yyyy'),to_date(V2_EVENT_DATE,'dd month yyyy'), is_date(V2_EVENT_DATE,'month dd yyyy'),to_date(V2_EVENT_DATE,'month dd yyyy'), is_date(V2_EVENT_DATE,'dd-Mon-yy'),to_date(V2_EVENT_DATE,'dd-Mon-yy'), is_date(V2_EVENT_DATE,'ddmmyy'),to_date(V2_EVENT_DATE,'ddmmyy'), is_date(V2_EVENT_DATE,'mmddyy'),to_date(V2_EVENT_DATE,'mmddyy'), null) EVENT_DATE_CLEANED from df") 错误: AnalysisException: u"Undefined function: 'is_date'. This function is neither a registered temporary function nor a permanent function registered in the database 'default'.; line 1 pos 29" 基本上,我正在搜索一个函数,它相当于在hive或pyspark中的sql is\u date。我无法在dataframe中开发这个,因为我再次被这个日期检查或是日期部分所打动,这就是为什么尝试hive temp视图。我是Pypark的新手。请帮忙。

bis0qfac

bis0qfac1#

case when unix_timestamp(date_col,'MM/dd/yy') is not null then to_date(from_unixtime(unix_timestamp(date_col,'MM/dd/yy')))
     when unix_timestamp(date_col,'MMM dd,yyyy') is not null then to_date(from_unixtime(unix_timestamp(date_col,'MMM dd,yyyy')))
     when ... and so on
 end as event_date_cleaned

日期格式应该是固定的。请参见此处的日期/时间模式参考:simpledateformat
您可以像这样轻松地在配置单元中测试格式字符串:

select to_date(from_unixtime(unix_timestamp('Aug 14,2019','MMM dd,yyyy')));

退货:

2019-08-14
Time taken: 0.056 seconds, Fetched: 1 row(s)

相关问题