簡體   English   中英

如何使用scala在Spark中使用DataSet?

[英]How to work with DataSet in Spark using scala?

我使用 DataFrame 加載我的 CSV 然后我轉換為 DataSet 但它的顯示是這樣的

此行的多個標記:
- 無法找到存儲在數據集中的類型的編碼器。 通過導入支持原始類型(Int、String 等)和產品類型(案例類)
spark.implicits._ 將在未來版本中添加對序列化其他類型的支持。
- 方法參數不足:(隱式證據$2:
org.apache.spark.sql.Encoder[DataSet.spark.aacsv])org.apache.spark.sql.Dataset[DataSet.spark.aacsv]。 未指定值參數證據$2

如何解決這個問題?。 我的代碼是 -

case class aaCSV(
    a: String, 
    b: String 
    )

object WorkShop {

  def main(args: Array[String]) = {
    val conf = new SparkConf()
      .setAppName("readCSV")
      .setMaster("local")
    val sc = new SparkContext(conf)
    val sqlContext = new SQLContext(sc)
    val customSchema = StructType(Array(
        StructField("a", StringType, true),
        StructField("b", StringType, true)))

    val df = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").schema(customSchema).load("/xx/vv/ss.csv") 
    df.printSchema()
    df.show()
    val googleDS = df.as[aaCSV]
    googleDS.show()

  }

}

現在我改變了這樣的主要功能 -

def main(args: Array[String]) = {
    val conf = new SparkConf()
      .setAppName("readCSV")
      .setMaster("local")
    val sc = new SparkContext(conf)
    val sqlContext = new SQLContext(sc)
import sqlContext.implicits._;
   val sa = sqlContext.read.csv("/xx/vv/ss.csv").as[aaCSV]
    sa.printSchema()
    sa.show()
}

但它拋出錯誤 -線程“main”org.apache.spark.sql.AnalysisException 中的異常:無法解析 ' Adj_Close ' 給定的輸入列:[_c1, _c2, _c5, _c4, _c6, _c3, _c0]; 第 1 行 pos 7 . 我該怎么辦 ?

現在我使用 spark 調度程序根據給定的時間間隔執行我的方法。 但我參考了這個鏈接 - https://spark.apache.org/docs/latest/job-scheduling.html#scheduling-within-an-application 請幫助我們。

在將DF轉換為DS之前,嘗試添加以下導入。

sc.implicits._

或者

sqlContext.implicits._

有關使用數據集的更多信息https://spark.apache.org/docs/latest/sql-programming-guide.html#creating-datasets

你的 csv 文件中有標題(列名)嗎? 如果是,請嘗試在 read 語句中添加.option("header","true") 示例: sqlContext.read.option("header","true").csv("/xx/vv/ss.csv").as[aaCSV]

下面的博客有不同的數據幀和數據集示例: http ://technippet.blogspot.in/2016/10/different-ways-of-creating.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM