PySpark: порядок извлечения и фильтрации данных для эффективности (& gt; 1 бит записей) [дубликат]

Я наткнулся на эту проблему во время попытки докереза ​​ Avahi , которая должна быть осведомлена о том, что ее публичный IP функционирует должным образом. Назначение статического IP-адреса в контейнере сложно из-за отсутствия поддержки статического присвоения IP в Docker.

В этой статье описывается метод назначения статического IP-адреса к контейнеру на Debian :

  1. Служба докеров должна быть запущена с помощью DOCKER_OPTS="--bridge=br0 --ip-masq=false --iptables=false". Я предполагаю, что мост br0 уже настроен.
  2. Контейнер должен быть запущен с помощью --cap-add=NET_ADMIN --net=bridge
  3. Внутренний контейнер pre-up ip addr flush dev eth0 в /etc/network/interfaces может использоваться для отклонения назначенного IP-адреса Docker, как в следующем примере:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    pre-up ip addr flush dev eth0
    address 192.168.0.249
    netmask 255.255.255.0
    gateway 192.168.0.1
  1. Сценарий ввода контейнера должен начинаться с /etc/init.d/networking start. Кроме того, скрипт ввода должен редактировать или заполнять файл /etc/hosts, чтобы удалить ссылки на IP-адрес, назначенный Docker.

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

3 ответа

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

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

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

2
ответ дан Danylo Zherebetskyy 19 August 2018 в 15:52
поделиться

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

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

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

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

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