从单个字符串创建 Spark DataFrame

Creating a Spark DataFrame from a single string

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

String fizz = "buzz"

会产生一个 DataFrame,其 .show() 方法如下所示:

+-----+
| 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|
+----+

尝试:

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

在 2.0 中您可以:

import spark.implicits._

rawData.toDF

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

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

在Java中,以下作品:

List<String> textList = Collections.singletonList("yourString");
SQLContext sqlContext = new SQLContext(sparkContext);
Dataset<Row> data = sqlContext
      .createDataset(textList, Encoders.STRING())
      .withColumnRenamed("value", "text");