[英]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.