2012-11-29 89 views
1

我想從包含HDFS中的紀元的文本文件創建外部Hive表。假設文件位於/user/me/test.txt。這裏的文件內容:如何使用列類型的時間戳創建外部Hive表

1354183921 
1354183922 

我有蜂巢0.8.1安裝,應該能夠使用Timestamp類型,所以我創建的表:

hive> CREATE EXTERNAL TABLE test1 (epoch Timestamp) 
     LOCATION '/user/me'; 

然後我查詢的表:

SELECT * FROM test1; 

,得到了以下異常:

Failed with exception java.io.IOException:java.lang.IllegalArgumentException: 
Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff] 

創建外部表時我錯過了什麼嗎?我很困惑,因爲Hive(自0.8)支持Unix紀元格式的時間戳秒:https://cwiki.apache.org/Hive/languagemanual-types.html#LanguageManualTypes-Timestamps

回答

2

時間戳字符串必須採用錯誤消息和鏈接中指定的格式,yyyy-mm-dd hh:mm :SS [.fffffffff]。要使用包含epoch的數據,您必須將其定義爲BIGINT,然後使用內置的UDF from_unixtime()轉換爲表示日期的字符串。然後你可以使用其他built-in UDF date functions來操縱這個日期。

+0

感謝您的解釋! Hope Hive可以更新他們的文檔,以便將來明確這一點。 – darcyq