-1
我試圖在Spark DataFrame上運行'SQL'查詢。我已經將df的名稱註冊爲表格,現在我正嘗試在應用udf的列上運行選擇,然後拾取通過特定條件的行。Spark SQL「select column AS ...」找不到列
問題是,我的WHERE
子句引用修改的列,但無法看到使用AS
聲明的名稱。
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;
當我跑,我又回到
org.apache.spark.sql.AnalysisException:無法解析 '啓動1' 給定的輸入列:[分數,啓動,...
parseDateTime
就是這樣
sqlContext.udf().register("parseDateTime", (String dt) -> new DateTime(dt).getMillis(), DataTypes.LongType);
噓定義的UDF我不應該這樣做嗎?