很簡單 - sql
返回數據幀,但你確信它只有一個元素,那麼你可以這樣做:
val last_max_date_from_hive = hivecontext.sql("select min(SampleTime) max_SampleTime from mytable")
val firstRow = last_max_date_from_hive.map {
// only value is important
case Row (value) => value.asInstanceOf[java.sql.Timestamp]; // cast to Date
}.first()
// we use SimpleDateFormat to parse to proper string format
val df2 = sqlContext.sql ("select * from mytable where SampleTime > cast('"
+ new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS").format(firstRow)
+ "' as date)");
如果你不想解析Timestamp對象,那麼你可以使用from_unixtime
功能和getTime()
:
val firstRow = las_max_date_from_hive.map {
case Row (value) => value.asInstanceOf[java.sql.Timestamp].getTime()/1000
}.first();
val df2 = sqlContext.sql ("select * from mytable where cast(SampleTime as timestamp) > from_unixtime(" + firstRow + ")")
感謝,Gaweda您的回覆。我試過你的代碼,並得到錯誤'java.lang.ClassCastException:java.sql.Timestamp不能轉換爲java.sql.Date' – Jhon
@Hossain這是因爲我的測試數據有'日期'列,你有'時間戳' - 我已經更新了回答 –
@Hossain另外一個沒有解析Timestamp的例子。請注意,您可以使用'java.util.Date',因爲它是Timestamp和sql.Date的父類 –