加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – Spark SQL:来自csv的自动模式

发布时间:2020-12-16 19:19:57 所属栏目:安全 来源:网络整理
导读:spark sql是否提供了自动加载csv数据的方法? 我找到了以下Jira: https://issues.apache.org/jira/browse/SPARK-2360但它已关闭…. 目前我将加载一个csv文件,如下所示: case class Record(id: String,val1: String,val2: String,....) sc.textFile("Data.c
spark sql是否提供了自动加载csv数据的方法?
我找到了以下Jira: https://issues.apache.org/jira/browse/SPARK-2360但它已关闭….

目前我将加载一个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)如何自动填充它(即Record(r(0),…..))?

更新:
我在这里找到了对模式生成的部分答案:
http://spark.apache.org/docs/1.1.0/sql-programming-guide.html#data-sources

// 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)

所以剩下的唯一问题就是如何做到这一步
??map(p => Row(p(0),p(1).trim))动态地给定给定数量的属性?

感谢您的支持!
约尔格

解决方法

您可以使用 spark-csv,您可以保存一些键击,而无需定义列名称并自动使用标题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读