2016-08-08 13 views
-1

nehme ich einen DatenrahmenFilter Aufzeichnungen zwischen bestimmten Stunden, Minuten und Sekunden in Funkendatenrahmen

+--------------------+---------------+------+ | 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|

ich will Aufzeichnungen nur zwischen 1 bis 1:10 Zeit unabhängig von Datum und

habe die Zeit ist in unix_timestamp als "JJJJ-MM-TT HH: mm: ss"

wie diese Datensätze extrahieren bitte helpme.

Dies ist es, Menschen zu analysieren, die zu spät :)

danken im Voraus kommen.

Antwort

0

ich erreicht, unter Code verwendet:

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

Wenn der Zeitstempel vom Typ String ist, dann mit einem Teilstring können Sie es tun.

Wenn es vom Typ Unix ist, dann können Sie es umwandeln, aber effizienter ist es, in der genauen Bibliothek und dem Format des Typs zu suchen, den es gespeichert wird, und einen Weg zu finden, die Stunde und Minute zu extrahieren.

hoffe, es hilft Ihnen :)

0

Sie könnten versuchen, die Funktionen hour und minute des functions package mit:

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)) 
) 
Verwandte Themen