【问题标题】:toDF() not getting supportedtoDF() 不受支持
【发布时间】:2020-07-30 11:07:28
【问题描述】:

我对 Scala 很陌生。我正在尝试将 Iterable[dataSet[Row]] 转换为数据框。它不适合我。这是代码

def execute(spark: SparkSession,
          input: Iterable[Dataset[Row]],
          execParams: Map[String, String]): Dataset[Row] = {

val spark: SparkSession = SparkSession.builder.master("local").getOrCreate
val sparkSession: SparkSession = SparkSession.builder().getOrCreate()
import sparkSession.implicits._

val jsonSeq = Seq(input)
val jsonRDD = sparkSession.sparkContext.parallelize(jsonSeq)
val jsonDF = jsonRDD.toDF()
}

【问题讨论】:

    标签: json scala dataframe apache-spark iterable


    【解决方案1】:

    您可以先转换为Dataset,然后再转换为Dataframe

    def execute(spark: SparkSession,
              input: Iterable[Dataset[Row]],
              execParams: Map[String, String]): Dataset[Row] = {
        import spark.implicits._
    
        val jsonSeq = Seq(input)
        val jsonRDD = spark.sparkContext.parallelize(jsonSeq)
        val jsonDF = spark.createDataset(jsonRDD).toDF()
    }
    

    如果你不喜欢转换成Dataset,可以指定RDD的类型:

    val jsonRDD: RDD[Iterable[Dataset[Row]]] = spark.sparkContext.parallelize(jsonSeq)
    val jsonDF = spark.createDataFrame[Iterable[Dataset[Row]]](jsonRDD).toDF()
    
    

    【讨论】:

      猜你喜欢
      • 2018-02-05
      • 2020-01-21
      • 2012-10-18
      • 2014-06-24
      • 2010-11-25
      • 1970-01-01
      • 2018-06-07
      • 2019-10-01
      • 1970-01-01
      相关资源
      最近更新 更多