我正在阅读一个文本文件,其中包含时间戳中的字段,格式为"yyyy-MM-dd HH:mm:ss"
我希望能够将它作为BigInt转换为Impala中的字段,并且希望在Java中使用yyyMMddHHmmss
。
我正在使用Talend作为ETL,但是我收到此错误“schema的dbType对于此组件不正确” 所以我想在我的tImpalaOutput组件中进行正确的转换
答案 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字段。