impala的bigint的java时间戳

ou6hu8tu  于 2021-06-26  发布在  Impala
关注(0)|答案(1)|浏览(729)

我正在读一个文本文件,它的时间戳中有一个这样的字段 "yyyy-MM-dd HH:mm:ss" 我想能够把它转换成一个字段在 Impala 作为bigint和应该喜欢 yyyMMddHHmmss 在 java 。
我将talend用于etl,但是我得到了一个错误“schema'sdbtype not correct for this component”,因此我希望在输出组件中有正确的转换

unguejic

unguejic1#

一个明显的选择是将日期作为字符串读取,将其格式化为所需的输出,然后将其转换为long,然后再将其发送给impala。
要做到这一点,首先使用talend的parsedate函数,如下所示:

TalendDate.parseDate("yyyy-MM-dd HH:mm:ss",row1.date)

这会将日期字符串解析为日期类型对象。从这里,您可以使用以下命令将其转换为所需的字符串格式:

TalendDate.formatDate("yyyMMddHHmmss",row2.date)

或者,可以通过以下方法一次性完成:

TalendDate.formatDate("yyyMMddHHmmss",TalendDate.parseDate("yyyy-MM-dd HH:mm:ss",row1.date))

在此之后,您应该有一个日期字符串在您想要的格式。然后可以使用tconverttype组件或以下java代码将其强制转换为long:

Long.valueOf(row3.date)

或者,再一次,我们可以在一行中完成整个过程:

Long.valueOf(TalendDate.formatDate("yyyMMddHHmmss",TalendDate.parseDate("yyyy-MM-dd HH:mm:ss",row1.date)))

从这里,您应该能够将它作为java long发送到impala bigint字段。

相关问题