Вопрос:

ToDS Спарк против DF

scala apache-spark

3034 просмотра

1 ответ

176 Репутация автора

Я понимаю, что можно преобразовать RDD в набор данных, используя rdd.toDS. Однако и здесь существует rdd.toDF. Есть ли какая-то польза от одного над другим?

После игры с API набора данных в течение дня я обнаружил, что почти любая операция выводит меня в DataFrame (например withColumn). После преобразования RDD с помощью toDSя часто обнаруживаю, что необходимо еще одно преобразование в DataSet, потому что что-то снова привело меня в DataFrame.

Я неправильно использую API? Должен ли я придерживаться .toDF и преобразовывать его в DataSet только в конце цепочки операций? Или есть ли преимущество в использовании toDS раньше?

Вот небольшой конкретный пример

spark
  .read
  .schema (...)
  .json (...)
  .rdd
  .zipWithUniqueId
  .map[(Integer,String,Double)] { case (row,id) => ... }
  .toDS // now with a Dataset API (should use toDF here?)
  .withColumnRenamed ("_1", "id" ) // now back to a DataFrame, not type safe :(
  .withColumnRenamed ("_2", "text")
  .withColumnRenamed ("_2", "overall")
  .as[ParsedReview] // back to a Dataset
Автор: Andrzej Wąsowski Источник Размещён: 12.04.2017 06:48

Ответы (1)


6 плюса

191 Репутация автора

Майкл Армбурст хорошо объяснил, что переход на набор данных и фрейм данных и разницу между ними. В основном в spark 2.x они объединили набор данных и API-интерфейс Dataframe в одно с небольшим отличием. «DataFrame - это просто DataSet общих строковых объектов. Когда вы не знаете все поля, DF - это ответ». https://www.youtube.com/watch?v=1a4pgYzeFwE

Автор: Sergio Alyoshkin Размещён: 12.04.2017 08:51
Вопросы из категории :
32x32