2016-06-01 6 views

ответ

-1

Я сделал некоторый анализ производительности для sql vs dataframe на Cassandra с использованием искры, я думаю, что это будет то же самое для HBASE.

Согласно мне, sql работает быстрее, чем подход к dataframe. Причиной этого может быть то, что в подходе dataframe есть много объектов java. В sql-подходе все делается в памяти.

Прикрепленные изображения.

enter image description here

+2

dataframe не rdd! – 54l3d

+0

@ 54l3d Все они строятся друг на друге. В конце концов, независимо от метода, ваш план выполнения извлекается как DAG из RDD.SQL - это более абстрактное определение того, что вы хотите сделать с несколькими возможными планами выполнения. Насколько хорош план, выбран секретный соус вашего SQL-движка. Кто лучше в создании соответствующего RDD, человека или машины? – YoYo

0

У меня нет доступа к кластеру, чтобы должным образом проверить, но я полагаю, что Спарк SQL просто компилирует в машинный код фрейма данных.

Правило большого пальца, которое я слышал, заключается в том, что код SQL должен использоваться для операций разведки и обработки данных для производственного кода.

1

Насколько я могу судить, они должны вести себя одинаково в отношении производительности. SQL внутренне будет работать как DataFrame

0

Spark SQL предлагает мощную новую инфраструктуру оптимизации Catalyst. Используя Catalyst, Spark может автоматически преобразовывать SQL-запросы, чтобы они выполнялись более эффективно.

DataFrame - это набор данных, организованный в именованные столбцы. Это концептуально эквивалентно таблице в реляционной базе данных или кадре данных в R/Python, но с более богатой оптимизацией, которая обеспечивает преимущества RDD (сильная типизация, возможность использования мощных функций лямбда) с преимуществами оптимизированного выполнения Spark SQL двигатель.

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

2

RDD всегда превосходит Dataframe и SparkSQL, но по моему опыту Dataframe хорошо работает по сравнению с SparkSQL. Функция Dataframe хорошо выполняет сравнение с искровым sql.Below ссылкой даст некоторое представление об этом.

Spark RDDs vs DataFrames vs SparkSQL

+0

ссылка, которую вы отправили, касается Spark 1.6. Теперь в Spark 2.0 SparkSQL использует генерацию всего кода сцены, которая ускоряет до 10X запросов. Таким образом, предоставленные вами данные и то, что вы указали, устарели. – mgaido

0

Если объединение может быть общими для всех запросов тщательно реализованных присоединиться РДУ может быть хорошим вариантом. Однако, если это не так, пусть искра/катализатор выполняет свою работу и объединяется в искровом sql. Он будет делать всю оптимизацию. Таким образом, вам не нужно будет поддерживать логику соединения и т. Д.

0

Сочетание Spark SQL и Spark Dataframe - это почти то же самое. Соединение фактически делегировано операциям RDD под капотом. В дополнение к работе RDD мы имеем удобные методы, такие как искра sql, кадр данных или набор данных. В случае искрового sql он должен потратить крошечное количество дополнительного времени на синтаксический анализ SQL.

Его следует оценивать с точки зрения хорошей практики программирования. Мне нравится набор данных, потому что вы можете уловить ошибки синтаксиса при компиляции. И кодировки за сценой заботятся о уплотнении данных и выполнении запроса.