从单个字符串创建 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");
我正在尝试采用硬编码字符串并将其转换为 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");