2014-12-03 92 views
1

我读它具有这种格式的时间戳字段"yyyy-MM-dd HH:mm:ss"的Java时间戳为bigint为帕拉

我希望能够将其转换为一个字段在黑斑羚为BigInt有,应该像Java中yyyMMddHHmmss一个文本文件。

我使用了Talend的ETL,但我得到这个错误“模式的DBTYPE不正确此组件” ,所以我希望有合适的转型,我tImpalaOutput组件

回答

0

一个显而易见的选择是阅读以字符串形式输入日期,将其格式化为所需的输出,然后在将其发送到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,并发送到Impala BIGINT字段。

+0

谢谢,这是非常有益的! :) – user1189851 2014-12-03 22:56:30

+0

嗨@ydaetskcoR:我试图使用龙。不幸的是BIGINT被映射到Java类型的BIGDECIMAL。任何想法如何解决这个问题? – user1189851 2014-12-09 17:24:12