Scala sparksql:来自csv的自动模式

Scala sparksql:来自csv的自动模式,scala,csv,apache-spark,apache-spark-sql,Scala,Csv,Apache Spark,Apache Spark Sql,spark sql是否提供自动加载csv数据的方法? 我发现了下面的东西,吉拉:但它已经关闭了 目前,我将加载一个csv文件,如下所示: case class Record(id: String, val1: String, val2: String, ....) sc.textFile("Data.csv") .map(_.split(",")) .map { r => Record(r(0),r(1), .....) }.register

spark sql是否提供自动加载csv数据的方法? 我发现了下面的东西,吉拉:但它已经关闭了

目前,我将加载一个csv文件,如下所示:

case class Record(id: String, val1: String, val2: String, ....)

 sc.textFile("Data.csv")
.map(_.split(",")) 
.map { r =>                  
   Record(r(0),r(1), .....)
}.registerAsTable("table1")
从csv文件自动推断模式有什么提示吗?特别是a)如何生成表示模式的类以及b)如何自动填充它(即记录(r(0),r(1),…)

更新: 我在这里找到了架构生成的部分答案:

所以剩下的唯一问题就是如何完成这一步
map(p=>Row(p(0),p(1).trim))
为给定数量的属性动态映射

谢谢你的支持! 约格

也许这个链接会对你有所帮助


您可以在不必定义列名和自动使用标题的情况下使用where来保存一些击键。

我认为最初的问题是关于如何使用
案例类而不是
数据帧
@user955091您的否决理由没有考虑在内:1)问题更多的是关于找到一个解决方案,解决spark sql和csv而不是案例类,2)答案已被问题作者接受,3)答案在你投反对票之前已累积了4票。你不觉得你的否决票有点苛刻吗?
// The schema is encoded in a string
val schemaString = "name age"
// Generate the schema based on the string of schema
val schema =
 StructType(
schemaString.split(" ").map(fieldName => StructField(fieldName, StringType, true)))
// Convert records of the RDD (people) to Rows.
val rowRDD = people.map(_.split(",")).map(p => Row(p(0), p(1).trim))
// Apply the schema to the RDD.
val peopleSchemaRDD = sqlContext.applySchema(rowRDD, schema)
val schemaString = "name age".split(" ")
// Generate the schema based on the string of schema
val schema =   StructType(schemaString.map(fieldName => StructField(fieldName, StringType, true)))
val lines = people.flatMap(x=> x.split("\n"))
val rowRDD = lines.map(line=>{
  Row.fromSeq(line.split(" "))
})
val peopleSchemaRDD = sqlContext.applySchema(rowRDD, schema)