scala—在配置单元中使用spark配置单元上下文格式从oracle导入到配置单元的日期应为yyyymmdd(dt\u skey)

s4chpxco  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(343)

我必须使用spark和scala将一个表从oracle导入到hive,oracle中的date列看起来像这个oracle列date,我必须在hive中将它转换为dt\u skey格式(yyyymmdd)。配置单元中的表格格式是Parquet地板。我该怎么做?我在谷歌上搜索了很多,但没有找到任何解决办法。
提前谢谢

bhmjp9jg

bhmjp9jg1#

假设您的输入数据应该是yy-mm-dd(因此16-09-15表示2016年,09月,15日),您可能需要这样的转换:

select to_char( to_date (dt, 'yy-mm-dd'), 'yyyymmdd') from ...

例子:

with my_table ( dt ) as ( select '16-09-15' from dual)
  -- this creates a test table my_table with column dt and value as shown
select dt, 
       to_char( to_date (dt, 'yy-mm-dd'), 'yyyymmdd') as dt_skey
from my_table
;

DT        DT_SKEY
--------  --------
16-09-15  20160915

您也可以直接操作输入字符串,但我强烈建议您不要这样做。在您尝试将数据推送到应用程序之前,将数据转换为日期并返回将捕获数据中的无效“日期”。此外,如果输入字符串不一致(例如,如果16-9-15和16-09-15一起被允许),字符串操作将变得复杂。
编辑:在对他最初的问题的评论中,评论指出dt在oracle中已经是日期格式了。在这种情况下,它不应该被包裹在里面 to_date() -那会导致错误。相反,解决方案要简单得多,所需要的只是 select to_char(dt, 'yyyymmdd') from ...

相关问题