2017-01-19 1 views
0

Ich versuche, Datum aus einer Timestamp-Spalte eines Objekts im Dataset-Filter zu extrahieren. Ich möchte alle Personen finden, die einen angemeldeten Eintrag auf 2010 gemacht habenSpark Dataset to_date/Jahr Funktion

class Person{ 
String name; 
Timestamp loggedat; 
} 
List<Person> persons; 
Dataset<Person> ds = spark.createDataset(
       persons, 
       Encoders.bean(Person.class) 
      ); 
ds.select(to_date(ds.col("loggedat"),"y")==2010); 

Diese Auswahl scheint nicht zu funktionieren. Bitte helfen Sie, wie man Jahr aus Timestamp extrahiert und Daten ausfiltert.

+1

Zum bekommen das Jahr Teil, sollten Sie passieren ' "yyyy"'. und da du es mit 2010 vergleichst, denke ich, dass du es in Filterbedingung tun musst und nicht auswählst. Referenz für die Funktion "to_date" https://spark.apache.org/docs/2.0.2/api/java/org/apache/spark/sql/functions.html#to_date(org.apache.spark.sql.Column) –

+0

If Sie möchten Jahr extrahieren, können Sie die Jahresfunktion verwenden? https://spark.apache.org/docs/2.0.2/api/java/org/apache/spark/sql/functions.html#year(org.apache.spark.sql.Column) –

+0

@RajatMishra - Hinzufügen " yyyy "funktioniert nicht. Es sagt, Methos to_Date ist undefined –

Antwort

1

Um das Jahr Teil zu erhalten, sollten Sie "yyyy" mit to_date Funktion übergeben.

Referenz: Spark-SQL Api doc

Verwandte Themen