2014-12-03 89 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