繁体   English   中英

无法在火花 scala 中使用案例 class 从文本文件创建 dataframe

[英]Unable to create dataframe from a textfile using case class in spark scala

我有一个文本文件格式的数据集我正在尝试使用案例 class 创建一个 dataframe 但我收到以下提到的错误:-

线程“主”java.lang.IllegalArgumentException 中的异常:要求失败:列数不匹配。 旧列名称 (1): value 新列名称 (4): Name, Age, Department, Salary

这是我的数据集的前三行:-

 Name,Age,Department,Salary
 Sohom,30,TD,9000000
 Aminul,32,AC,10000000

我正在使用的代码如下:-

import org.apache.log4j.Logger
import org.apache.log4j.Level
import org.apache.spark.sql.SparkSession
case class Record(Name: String, Age :Int, Department: String, Salary: Int)
object airportDetails {

    def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder().appName("Spark SQL val basic example").config("spark.master", "local").getOrCreate()
    spark.sparkContext.setLogLevel("OFF")
    Logger.getLogger("org").setLevel(Level.OFF)
    Logger.getLogger("akka").setLevel(Level.OFF)
    import spark.implicits._

    val input = spark.sparkContext.textFile("file:///C:/Users/USER/Desktop/SparkDocuments/airport_dataset.txt")
      .map(line => line.split(",").map(x => Record(x(0).toString,x(1).toInt,x(2).toString,x(3).toInt)))
    val input1 = input.toDF("Name", "Age", "Department", "Salary")

    input1.show()

    }
}

您可以只使用 Spark dataframe CSV 阅读器并将其转换为具有记录类型的数据集:

case class Record(Name: String, Age: Int, Department: String, Salary: Int)

val ds = spark.read.option("header",true)
                   .option("inferschema",true)
                   .csv("file:///C:/Users/USER/Desktop/SparkDocuments/airport_dataset.txt")
                   .as[Record]

如果你想要一个 dataframe 代替,你可以使用toDF

val df = ds.toDF("Name", "Age", "Department", "Salary")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM