2016-08-08 7 views
-1

iは、データフレームフィルターレコード

+--------------------+---------------+------+ | timestamp| login | Age | +--------------------+---------------+------+ 2016-06-01 01:05:20 | 7372 | 50| 2016-06-01 01:00:20 | 7374 | 35| 2016-06-01 01:10:20 | 7376 | 40|

を抱えていたと私は唯一の1にかかわらず、日付の時間1:10と

間のレコードをしたいです時間はunix_timestampに "yyyy-MM-dd HH:mm:ss"となります。

これらのレコードを抽出するにはどうすれば助かりますか。

これは、事前に遅く:)

感謝を来ている人を分析することです。

答えて

0

私はコードの下に使用し、それを達成:

val attendenceDF = DF.withColumn("Attendence",when(date_format(DF("timestamp"),"HH:mm:ss").between("01:00:00","01:10:00"),"InTime").otherwise("NotInTime")) 

attendenceDF.show()

+--------------------+---------------+------+-----------+ | timestamp| login | Age | Attendence| +--------------------+---------------+------+-----------+ 2016-06-01 01:05:20 | 7372 | 50|InTime | 2016-06-01 01:00:20 | 7374 | 35|InTime | 2016-06-01 01:10:20 | 7376 | 40|NotInTime |

-1

タイムスタンプが文字列の場合は部分文字列を使用できます。

UNIXの場合は変換することができますが、保存するタイプのライブラリとフォーマットを正確に調べ、時間と分を抽出する方法を確認してください。

はそれがあなたの役に立てば幸い:)

0

あなたが機能hourfunctions packageminuteを使用して試みることができる:

import org.apache.spark.sql.functions._ 
import org.apache.spark.sql.types._ 

val tsCol = col("timestamp").cast(TimestampType) 

val filteredDF = df.filter(
    (hour(tsCol) === 1) && (minute(tsCol).between(0, 10)) 
)