我在Scala IDE中有一个字符串构建器(sb),其数据如下所示
CellId,Date,Time,MeasType,MeasResult
251498240,2016-12-02,20:45:00,RRC.ConnEstabAtt.emergency,0
251498240,2016-12-02,20:45:00,RRC.ConnEstabAtt.highPriorityAccess,0
251498240,2016-12-02,20:45:00,RRC.ConnEstabAtt.mt-Access,4
现在我想使用RDD
将此字符串转换为scala
。请帮帮我。
我正在使用此代码。但没有运气。提前致谢
val headerFile = sc.parallelize(sb)
headerFile.collect()
答案 0 :(得分:0)
StringBuilder 是 用于从可变字符序列构建字符串 。因此,您添加到构建器的内容将被附加到一个字符串。
您需要分隔添加的字符串,以用作sparkcontext中的字符串列表
假设字符串添加了尾随换行符,您可以使用换行符拆分字符串构建器并将其转换为rdd
val headerFile = sc.parallelize(sb.toString.split("\n"))
headerFile.collect()
要显示数据,您必须打印它们或将它们保存到文件
现在,如果要在保存之前转换为数据帧,则可以执行以下操作
val data = sb.toString.split("\n")
import org.apache.spark.sql.types._
val schema = StructType(data.head.split(",").map(StructField(_, StringType, true)))
val rdd = sc.parallelize(sb.toString.split("\n").tail.map(line => Row.fromSeq(line.split(","))))
spark.createDataFrame(rdd, schema).show(false)
应该给你
+---------+----------+--------+-----------------------------------+----------+
|CellId |Date |Time |MeasType |MeasResult|
+---------+----------+--------+-----------------------------------+----------+
|251498240|2016-12-02|20:45:00|RRC.ConnEstabAtt.emergency |0 |
|251498240|2016-12-02|20:45:00|RRC.ConnEstabAtt.highPriorityAccess|0 |
|251498240|2016-12-02|20:45:00|RRC.ConnEstabAtt.mt-Access |4 |
+---------+----------+--------+-----------------------------------+----------+