我是Spark(使用Scala)的新手,我在RDD到DF转换等方面尝试了一些事情。 我有一个String变量示例:
val myString = "apple, boy, cat, dog"
如何将 myString 转换为org.apache.spark.sql.Row
我尝试了下面的新内容,但是当我尝试打印创建的行的长度时,我得到1(ONE),我将得到4。
val row = org.apache.spark.sql.Row.apply(myString)
val row1 = org.apache.spark.sql.Row(myString)
val row2 = org.apache.spark.sql.Row.fromSeq(Seq(myString.split(',')))
答案 0 :(得分:2)
正确的方法是
org.apache.spark.sql.Row.fromSeq(myString.split(','))
//res0: org.apache.spark.sql.Row = [apple, boy, cat, dog]
其中myString.split(',')
是Array[String]
并隐式转换为Seq
如果您想创建数据框,那么
val myString = "apple, boy, cat, dog"
val row2 = sc.parallelize(Seq(org.apache.spark.sql.Row.fromSeq(myString.split(','))))
sqlContext.createDataFrame(row2, StructType(Seq(StructField("name1", StringType, true), StructField("name2", StringType), StructField("name3", StringType), StructField("name4", StringType)))).show(false)
应该给你
+-----+-----+-----+-----+
|name1|name2|name3|name4|
+-----+-----+-----+-----+
|apple| boy | cat | dog |
+-----+-----+-----+-----+
其中StructType(Seq(StructField("name1", StringType, true), StructField("name2", StringType), StructField("name3", StringType), StructField("name4", StringType)))
是架构创建。