目前,我正在从一个带有标题的制表符分隔文件制作一个数据帧,就像这样。
val df = sqlContext.read.format("csv")
.option("header", "true")
.option("delimiter", "\t")
.option("inferSchema","true").load(pathToFile)
我想做完全相同的事情,但使用字符串而不是文件。我该怎么做?
据我所知,没有内置的方法可以从字符串构建数据帧。然而,出于原型设计的目的,您可以从元组序列创建数据帧。
您可以利用它从字符串创建数据帧。
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中,请确保编写此导入spark.implicits._
以便使用toDF()
。
如何在spark数据帧中用空字符串替换空字符串。 我尝试了以下方法: 它抛给我一个错误。
我有这个。我想创建一个,它保存如下 但是通过这样做 问题是每个现在都保存为。例如,第3行是 对于那些怀疑论者,我尝试了,它是。第2列工作正常。 如何保存为每行,而不是?也就是说,我如何保存所有行的作为而不是?
问题内容: 我在bash中有以下字符串 我想从创建一个。该包含重复直到长度= 20这样的结果应该是这样的: 在bash中如何做? 问题答案: 这应该工作:
问题内容: 我有以下代码: 我如何获取它来解析包含在字符串而不是文件中的XML? 问题答案: 我的代码库中有此功能,它应该对你有用。
所以,我意识到我要问的问题与一个一次又一次被打死的话题有关,然而,即使在阅读了我能找到的所有答案和留档后,我仍然对字符串实习有点困惑。也许是因为我对JVM缺乏了解;也许是因为Java7中引入的变化贬低了前面提到的许多答案和留档。不管怎样,我都被卡住了,我希望有人能帮我更清楚地理解这个概念... 在上面的示例中,我知道将创建两个字符串对象。我还了解到,内存中只有一个包含序列“t”、“e”、“x”和“