从单个字符串创建Spark DataFrame

时间:2016-10-10 17:17:23

标签: scala apache-spark spark-dataframe

我尝试使用硬编码字符串并将其转换为1行Spark DataFrame(具有StringType类型的单列),以便:

String fizz = "buzz"

使用.show()方法的DataFrame会产生这样的结果:

+-----+
| fizz|
+-----+
| buzz|
+-----+

到目前为止,我最好的尝试是:

val rawData = List("fizz")
val df = sqlContext.sparkContext.parallelize(Seq(rawData)).toDF()

df.show()

但是我得到以下编译器错误:

java.lang.ClassCastException: org.apache.spark.sql.types.ArrayType cannot be cast to org.apache.spark.sql.types.StructType
    at org.apache.spark.sql.SQLContext.createDataFrame(SQLContext.scala:413)
    at org.apache.spark.sql.SQLImplicits.rddToDataFrameHolder(SQLImplicits.scala:155)

关于我出错的地方的任何想法?另外,如何将"buzz"设置为fizz列的行值?

更新

尝试:

sqlContext.sparkContext.parallelize(rawData).toDF()

我得到的DF看起来像:

+----+
|  _1|
+----+
|buzz|
+----+

1 个答案:

答案 0 :(得分:6)

尝试:

sqlContext.sparkContext.parallelize(rawData).toDF()

在2.0中你可以:

import spark.implicits._

rawData.toDF

可选择为toDF提供一系列名称:

sqlContext.sparkContext.parallelize(rawData).toDF("fizz")