Spark SQL-Running Query в HiveContext vs DataFrame [дубликат]

Вдохновленный комментариями Нельсона и Chris ', я нашел способ обхода одной и той же исходной политики с помощью div и iframe:

HTML:

CSS:

#div_iframe {
  border-style: inset;
  border-color: grey;
  overflow: scroll;
  height: 500px;
  width: 90%
}

#frame {
  width: 100%;
  height: 1000%;   /* 10x the div height to embrace the whole page */
}

Теперь предположим, что я хочу пропустить первые 438 (вертикальные) пиксели страницы iframe, прокрутив до это положение.

Решение JS:

document.getElementById('div_iframe').scrollTop = 438

Решение JQuery:

$('#div_iframe').scrollTop(438)

Решение CSS:

#frame { margin-top: -438px }

( Каждого решения достаточно, и эффект CSS один немного отличается, поскольку вы не можете прокручивать вверх, чтобы видеть верхнюю часть страницы iframed.)

8
задан zero323 7 February 2016 в 19:15
поделиться

3 ответа

Нет никакой разницы в производительности. Оба метода используют точно такой же механизм выполнения и внутренние структуры данных. В конце дня все сводится к личным предпочтениям.

  • Возможно, запросы DataFrame гораздо проще создавать программно и обеспечивать минимальную безопасность.
  • Обычные SQL-запросы могут быть значительно более краткими, чем проще понять. Они также переносимы и могут быть использованы без каких-либо изменений с каждым поддерживаемым языком. С помощью HiveContext они могут также использоваться для раскрытия некоторых функций, которые могут быть недоступны другими способами (например, UDF без обтекателей Spark).
15
ответ дан 2 revs 23 August 2018 в 00:24
поделиться

В идеале катализатор Spark должен оптимизировать оба вызова одного и того же плана выполнения, а производительность должна быть одинаковой. Как позвонить - это всего лишь вопрос вашего стиля. На самом деле существует разница, соответствующая отчету Hortonworks ( https://community.hortonworks.com/articles/42027/rdd-vs-dataframe-vs-sparksql.html ), где SQL превосходит Dataframes для случая, когда вам нужны записи GROUPed с их суммарными COUNTS, которые СООТВЕТСТВУЮТ по названию записи.

2
ответ дан Danylo Zherebetskyy 23 August 2018 в 00:24
поделиться

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

Разбиение сложных SQL-запросов на более простые запросы и назначение результата в DF дает лучшее понимание.

Разбирая запрос на несколько DF, разработчик получает преимущество использования кеша, репарации (до распределять данные равномерно по разделам с помощью уникального ключа / уникального ключа).

1
ответ дан Ram 23 August 2018 в 00:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: