BigInt for Impala的Java时间戳

时间:2014-12-03 21:30:30

标签: java timestamp talend impala

我正在阅读一个文本文件,其中包含时间戳中的字段,格式为"yyyy-MM-dd HH:mm:ss"

我希望能够将它作为BigInt转换为Impala中的字段,并且希望在Java中使用yyyMMddHHmmss

我正在使用Talend作为ETL,但是我收到此错误“schema的dbType对于此组件不正确” 所以我想在我的tImpalaOutput组件中进行正确的转换

1 个答案:

答案 0 :(得分:0)

一个显而易见的选择是以字符串形式读取日期,将其格式化为您想要的输出,然后将其转换为long,然后再将其发送到Impala。

要做到这一点,你首先要使用Talend的parseDate函数,例如:

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

将日期字符串解析为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,然后发送到Impala BIGINT字段。