无法在 spark scala 中使用 case class 从文本文件创建数据框
Unable to create dataframe from a textfile using case class in spark scala
我有一个文本文件格式的数据集我正在尝试使用 case class 创建一个数据框,但我收到了下面提到的错误:-
线程“main”中出现异常java.lang.IllegalArgumentException:要求失败:列数不匹配。
旧列名称 (1):值
新列名称 (4):姓名、年龄、部门、薪水
这是我的数据集的前三行:-
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 数据帧 CSV reader 并将其转换为记录类型为:
的数据集
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]
如果你想要一个数据框,你可以使用 toDF
:
val df = ds.toDF("Name", "Age", "Department", "Salary")
我有一个文本文件格式的数据集我正在尝试使用 case class 创建一个数据框,但我收到了下面提到的错误:-
线程“main”中出现异常java.lang.IllegalArgumentException:要求失败:列数不匹配。 旧列名称 (1):值 新列名称 (4):姓名、年龄、部门、薪水
这是我的数据集的前三行:-
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 数据帧 CSV reader 并将其转换为记录类型为:
的数据集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]
如果你想要一个数据框,你可以使用 toDF
:
val df = ds.toDF("Name", "Age", "Department", "Salary")