При получении и обработке данных из HBASE с использованием искры, *Spark sql join*
против *spark dataframe join*
- какой из них быстрее?Spark sql join vs spark dataframe join
ответ
Я сделал некоторый анализ производительности для sql vs dataframe на Cassandra с использованием искры, я думаю, что это будет то же самое для HBASE.
Согласно мне, sql работает быстрее, чем подход к dataframe. Причиной этого может быть то, что в подходе dataframe есть много объектов java. В sql-подходе все делается в памяти.
Прикрепленные изображения.
У меня нет доступа к кластеру, чтобы должным образом проверить, но я полагаю, что Спарк SQL просто компилирует в машинный код фрейма данных.
Правило большого пальца, которое я слышал, заключается в том, что код SQL должен использоваться для операций разведки и обработки данных для производственного кода.
Насколько я могу судить, они должны вести себя одинаково в отношении производительности. SQL внутренне будет работать как DataFrame
Spark SQL предлагает мощную новую инфраструктуру оптимизации Catalyst. Используя Catalyst, Spark может автоматически преобразовывать SQL-запросы, чтобы они выполнялись более эффективно.
DataFrame - это набор данных, организованный в именованные столбцы. Это концептуально эквивалентно таблице в реляционной базе данных или кадре данных в R/Python, но с более богатой оптимизацией, которая обеспечивает преимущества RDD (сильная типизация, возможность использования мощных функций лямбда) с преимуществами оптимизированного выполнения Spark SQL двигатель.
Скорость выполнения будет такой же, поскольку они используют одни и те же алгоритмы оптимизации.
RDD всегда превосходит Dataframe и SparkSQL, но по моему опыту Dataframe хорошо работает по сравнению с SparkSQL. Функция Dataframe хорошо выполняет сравнение с искровым sql.Below ссылкой даст некоторое представление об этом.
ссылка, которую вы отправили, касается Spark 1.6. Теперь в Spark 2.0 SparkSQL использует генерацию всего кода сцены, которая ускоряет до 10X запросов. Таким образом, предоставленные вами данные и то, что вы указали, устарели. – mgaido
Если объединение может быть общими для всех запросов тщательно реализованных присоединиться РДУ может быть хорошим вариантом. Однако, если это не так, пусть искра/катализатор выполняет свою работу и объединяется в искровом sql. Он будет делать всю оптимизацию. Таким образом, вам не нужно будет поддерживать логику соединения и т. Д.
Сочетание Spark SQL и Spark Dataframe - это почти то же самое. Соединение фактически делегировано операциям RDD под капотом. В дополнение к работе RDD мы имеем удобные методы, такие как искра sql, кадр данных или набор данных. В случае искрового sql он должен потратить крошечное количество дополнительного времени на синтаксический анализ SQL.
Его следует оценивать с точки зрения хорошей практики программирования. Мне нравится набор данных, потому что вы можете уловить ошибки синтаксиса при компиляции. И кодировки за сценой заботятся о уплотнении данных и выполнении запроса.
- 1. simple spark dataframe join
- 2. Spark broadcast vs join
- 3. Spark RDD groupByKey + join vs join performance
- 4. Spark SQL и Cassandra JOIN
- 5. Запросы Spark sql vs dataframe
- 6. Spark join экспоненциально медленный
- 7. Spark join не работает
- 8. Spark DataFrame vs sqlContext
- 9. SPARK SQL LEFT JOIN слишком много строк
- 10. Spark join производит неправильные результаты
- 11. Spark Datasets - Inner Join Issue
- 12. Spark two RDD join issue
- 13. Spark-SQl Разделы DataFrame
- 14. Spark dataframe saveAsTable vs save
- 15. Spark 2.0 Dataset vs DataFrame
- 16. Spark Streaming + Spark SQL
- 17. Spark SQL vs HIVE on Spark
- 18. Apache Spark Outer Join Принимая много времени
- 19. Spark DataFrame и Cassandra
- 20. SQL: join vs где
- 21. Join vs join fetch
- 22. Apache Spark operation on .join dataset
- 23. Включая нулевые значения в Apache Spark Join
- 24. Spark: метод join с общим RDD
- 25. self join in spark with scala api
- 26. Spark broadcast join загружает данные в драйвер
- 27. Дублирование значений при использовании join() in spark
- 28. Spark Join Возвращаемые нулевые значения в столбцах
- 29. Spark DataFrame
- 30. Spark SQL DataFrame pretty print
dataframe не rdd! – 54l3d
@ 54l3d Все они строятся друг на друге. В конце концов, независимо от метода, ваш план выполнения извлекается как DAG из RDD.SQL - это более абстрактное определение того, что вы хотите сделать с несколькими возможными планами выполнения. Насколько хорош план, выбран секретный соус вашего SQL-движка. Кто лучше в создании соответствующего RDD, человека или машины? – YoYo