[英]SQL queries in Spark/scala
我是Spark / scala的新手,正在嘗試將CSV文件導入spark,並分析其中的數據。 CSV文件有5列(passengerid,flightid,從,到,日期)。 我已經成功上傳了csv文件,但是當我執行查詢時,說要找出每月的總飛行次數,我會不斷收到錯誤-特別是'線程“ main”中的異常org.apache.spark.sql.AnalysisException :找不到表或視圖:df1; 第1行pos 14'。 該表已成功上傳,因為我可以將其視為輸出,問題出在查詢表上。 有什么想法嗎?
我的代碼如下:
'''包GerardPRactice
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.SQLContext
object trial1 extends App {
val sparkConf = new SparkConf().setAppName("trial1").
setMaster("local[2]") //set spark configuration
val sparkContext = new SparkContext(sparkConf) // make spark context
val sqlContext = new SQLContext(sparkContext) // make sql context
val spark = SparkSession
.builder()
.master("local")
.appName("Question1")
.getOrCreate()
val df1 = sqlContext.read
.format("com.databricks.spark.csv")
.option("header", "true")
.option("delimiter", "|")
.option("inferSchema", "true")
.load("C:/Users/Gerard/Documents/flightData.csv")
// df1: org.apache.spark.sql.DataFrame = [passengerID: int, flightID: int, Departure: string, Destination: string, date: int]
val df2 = sqlContext.read
.format("com.databricks.spark.csv")
.option("header", "true")
.option("delimiter", "|")
.option("inferSchema", "true")
.load("C:/Users/Gerard/Documents/passengers.csv")
df1.show()
//val PassID = df1.select("passengerId")
val totalflightJAN = spark.sql("SELECT * FROM df1 WHERE date>= '2017-01-01' & date<='2017-01-31'")
totalflightJAN.collect.foreach(println)
}'''
幫個忙,改用DataFrame語法,而不是純SQL! :)
假設df1.show
和df1.printSchema
成功(也請仔細查看date
數據類型),則可以嘗試以下操作:
df1.filter($"date" >= lit('2017-01-01') && $"date" <= lit('2017-01-31'))
您可能需要用to_date($"date", "yyyy/MM/dd")
(或其他格式)包裝“ date”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.