Инициализация DataFrame с нулевыми значениями - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь создать фрейм данных с одной строкой, значения которой равны нулю.

val df = Seq(null,null).toDF("a","b")

Столкнулись с проблемами, даже если мы использовали null.instanceof, но безуспешно.

val df = Seq(null.asInstanceOf[Integer],null.asInstanceOf[Integer]).toDF("a","b")

Это работает, но я не люблю указывать тип поля, в основном это должна быть строка.

Ответы [ 4 ]

0 голосов
/ 28 августа 2018

Мой предпочтительный способ - использовать Option.empty[A]:

val df = Seq((Option.empty[Int],Option.empty[Int])).toDF("a","b")
0 голосов
/ 28 августа 2018

Я предполагаю, что вы хотите DF с двумя столбцами, в этом случае каждая запись должна быть кортежем или регистром дел. В этом случае вы также можете явно указать тип Seq, чтобы не использовать asInstanceOf:

val df = Seq[(Integer, Integer)]((null, null)).toDF("a","b")
0 голосов
/ 28 августа 2018
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.types.{IntegerType, StructField, StructType}
import org.apache.spark.sql.{DataFrame, Row, SparkSession}

object SparkApp extends App {

  val sparkSession: SparkSession = SparkSession.builder()
    .appName("Spark_Test_App")
    .master("local[2]")
    .getOrCreate()

  val schema: StructType = StructType(
    Array(
      StructField("a", IntegerType, nullable = true),
      StructField("b", IntegerType, nullable = true)
    )
  )

  import sparkSession.implicits._
  val nullRDD: RDD[Row] = Seq((null, null)).toDF("a", "b").rdd

  val df: DataFrame = sparkSession.createDataFrame(nullRDD, schema)

  df.printSchema()

  df.show()

  sparkSession.stop()
}
0 голосов
/ 28 августа 2018

Выглядит как опечатка в "asInstanceOf", у меня нормально работало:

       List(null.asInstanceOf[Integer],null.asInstanceOf[Integer]).toDF("a").show(false)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...