此刻,我正在使用带有标题的制表符分隔文件来制作数据框,
val df = sqlContext.read.format("csv")
.option("header", "true")
.option("delimiter", "\t")
.option("inferSchema","true").load(pathToFile)
我想做完全一样的事情,但要用字符串而不是文件。我该怎么办?
答案 0 :(得分:0)
据我所知,没有内置的方法可以从字符串构建数据框。但是,出于原型制作目的,您可以从元组序列创建数据框。
您可以利用它从字符串中创建数据框。
scala> val s ="x,y,z\n1,2,3\n4,5,6\n7,8,9"
s: String =
x,y,z
1,2,3
4,5,6
7,8,9
scala> val data = s.split('\n')
// Then we extract the first element to use it as a header.
scala> val header = data.head.split(',')
scala> val df = data.tail.toSeq
// converting the seq of strings to a DF with only one column
.toDF("X")
// spliting the string
.select(split('X, ",") as "X")
// extracting each column from the array and renaming them
.select( header.indices.map( i => 'X.getItem(i).as(header(i))) : _*)
scala> df.show
+---+---+---+
| x| y| z|
+---+---+---+
| 1| 2| 3|
| 4| 5| 6|
| 7| 8| 9|
+---+---+---+
ps:如果您不熟悉REPL,请确保编写此import spark.implicits._
以便使用toDF()
。