Ich versuche, eine 'SQL' Abfrage auf einem Spark DataFrame auszuführen. Ich habe den Namen des df als Tabelle registriert und jetzt versuche ich, eine Auswahl auf einer Spalte auszuführen, wo ich ein udf anwende und dann die Reihen aufnehme, die eine bestimmte Bedingung bestehen.Spark SQL "Spalte auswählen AS ..." Spalte nicht finden
Das Problem ist, dass auf meine WHERE
-Klausel verweist die modifizierte Spalte, aber es ist nicht in der Lage, die Namen mit AS
deklariert zu sehen.
DataFrame df = sqlContext.read()
.format("com.databricks.spark.csv")
.option("header", "true")
.option("delimiter", delimiter)
.load(path);
df.registerTempTable("df");
String sqlDfQuery = "SELECT parseDateTime(start) as start1 FROM df WHERE start1 > 1";
if (sqlContext.sql(sqlDfQuery).take(1) != null) return true;
wenn ich laufe, dass ich zurück
org.apache.spark.sql.AnalysisException bin immer: kann 'Start1' gegeben Eingabespalten nicht lösen: [Partituren, beginnen, ...
parseDateTime
ist ein UDF wie die
sqlContext.udf().register("parseDateTime", (String dt) -> new DateTime(dt).getMillis(), DataTypes.LongType);
Sh
definiert Würde ich das nicht versuchen?