row_number в наборах данных.Row_number apis приводит к кадру данных. - PullRequest
0 голосов
/ 16 декабря 2018

Может кто-нибудь дать мне знать, как получить row_number в наборах данных.Row_number apis приводит к кадру данных.Я не хочу преобразовывать набор данных во фрейм данных, а затем обратно в набор данных только для вычисления row_number.

1 Ответ

0 голосов
/ 16 декабря 2018

Способ работы Datasets в Spark заключается в том, что если вы примените к ним любое преобразование, они преобразуются в Dataframe, который внутренне равен Dataset[Row], и это поведение является только логическим.Позвольте мне объяснить это вам на примере.

Предположим, у вас есть следующий класс дел.

case class Person(SSN: Int, Name: String)

и у вас есть Dataset[Person] со ссылкой people

Теперь, если вы выполните people.withColumn("row_number", row_number()), схема этого больше не соответствует классу Person и должна быть преобразована в общий тип Row, следовательно, Dataset[Person] становится Dataset[Row] / Dataframe.

Так что если вы хотитедобавьте row_number и все еще хотите, чтобы оно было Dataset[Person]. Я бы предложил добавить дополнительное поле к вашему классу дел.

case class Person(SSN: Int, Name: String, row_number: Long)

Таким образом, при добавлении нового столбца row_number каждая строка будет соответствоватьк классу дела Person и не будет преобразован в общий тип Row.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...