我尝试使用硬编码字符串并将其转换为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|
+----+
答案 0 :(得分:6)
尝试:
sqlContext.sparkContext.parallelize(rawData).toDF()
在2.0中你可以:
import spark.implicits._
rawData.toDF
可选择为toDF
提供一系列名称:
sqlContext.sparkContext.parallelize(rawData).toDF("fizz")