Spark SQL преобразует набор данных в фрейм данных - PullRequest
0 голосов
/ 11 октября 2018

Как преобразовать объект набора данных в фрейм данных?В моем примере я конвертирую файл JSON в dataframe и преобразую в DataSet.В набор данных я добавил некоторый дополнительный атрибут (newColumn) и преобразовал его обратно в фрейм данных.Вот мой пример кода:

val empData = sparkSession.read.option("header", "true").option("inferSchema", "true").option("multiline", "true").json(filePath)

.....

 import sparkSession.implicits._
    val res = empData.as[Emp]

    //for (i <- res.take(4)) println(i.name + " ->" + i.newColumn)

    val s = res.toDF();

    s.printSchema()

  }
  case class Emp(name: String, gender: String, company: String, address: String) {
    val newColumn = if (gender == "male") "Not-allowed" else "Allowed"
  }

Но я ожидаю, что новое имя столбца newColumn добавлено в s.printschema().выходной результат.Но этого не происходит?Зачем?Какой-либо причине?Как мне этого добиться?

1 Ответ

0 голосов
/ 11 октября 2018

Схема вывода с Product Encoder определяется исключительно на основе сигнатуры конструктора.Поэтому все, что происходит в теле, просто отбрасывается.

Вы можете

empData.map(x => (x, x.newColumn)).toDF("value", "newColumn")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...