Programmers ­‑ ‑‑, ‑,,,, ­­­­­ ­­­­­­‑‑‑‑‑‑‑ ­­­­­­­‑‑‑‑‑‑‑2020 ббк



Download 0,77 Mb.
bet20/20
Sana22.02.2022
Hajmi0,77 Mb.
#80758
1   ...   12   13   14   15   16   17   18   19   20
Bog'liq
kk


Глава 16. Большие данные: Hadoop, Spark, NoSQL и IoT
зывает переопределенный метод status каждый раз с поступлением нового сообщения статуса. В данном случае мы проверяем уведомления о подписке или отписке от канала.
Клиент PubNub вызывает переопределенный метод message (строки 36–45) при поступлении нового сообщения из канала. Строки 37 и 38 получают из сообщения название компании и цену, которые выводятся приложением, чтобы пользователь видел принимаемые сообщения. Строка 30 использует метод at коллекции DataFrame для нахождения строки соответствующей компании и ее столбца 'price', а затем присваивает этому элементу новую цену. После того как счетчик order_count достигнет MAX_ORDERS, строка 45 вызывает метод unsubscribe_all клиента PubNub, для того чтобы отписаться от канала.
Функция Update
В этом примере для визуализации цен применяются средства анимации, представленные в разделе «Введение в data science» главы 6. Функция update определяет прорисовку одного кадра анимации; она многократно вызывается объектом FuncAnimation, который будет определен ниже. Мы используем функцию barplot библиотеки Seaborn для визуализации данных от коллекции DataFrame companies_df, используя значения столбца 'company' по оси x и значения столбца 'price' по оси y.
47 def update(frame_number):
48 """Настраивает содержимое гистограммы для каждого кадра анимации."""
49 plt.cla() # Стереть старую гистограмму
50 axes = sns.barplot(
51 data=companies_df, x='company', y='price', palette='cool')
52 axes.set(xlabel='Company', ylabel='Price')
53 plt.tight_layout()
54
Настройка объекта Figure
В основной части сценария сначала назначается стиль оформления диаграммы, после чего создается объект Figure, на котором будет выводиться гистограмма:
55 if __name__ == '__main__':
56 sns.set_style('whitegrid') # Белый фон с серыми линиями сетки
57 figure = plt.figure('Stock Prices') # Объект Figure для анимации
58
16.8. «Интернет вещей» 859
Настройка объекта FuncAnimation и отображение окна
Теперь настроим объект FuncAnimation, вызывающий функцию update, а затем и метод show библиотеки Matplotlib для отображения Figure. Обычно метод блокирует продолжение сценария до того, как вы закроете Figure. В данном случае передается ключевой аргумент block=False, чтобы сценарий продолжил выполнение, а мы могли настроить клиента PubNub и подписаться на канал.
59 # Настроить и запустить анимацию с вызовом функции update
60 stock_animation = animation.FuncAnimation(
61 figure, update, repeat=False, interval=33)
62 plt.show(block=False) # display window
63
Настройка клиента PubNub
Затем мы настраиваем ключ подписки PubNub, используемый клиентом PubNub в сочетании с именем канала для подписки на канал. Ключ задается как атрибут объекта PNConfiguration (модуль pubnub.pnconfiguration), передаваемый в строке 69 новому объекту клиента PubNub (модуль pubnub.pubnub). Строки 70–72 создают объект SensorSubscriberCallback и передают его методу add_listener клиента PubNub, чтобы зарегистрировать его для получения сообщений от канала. Аргумент командной строки используется для определения количества обрабатываемых сообщений.
64 # Настроить ключ потока pubnub-market-orders
65 config = PNConfiguration()
66 config.subscribe_key = 'sub-c-4377ab04-f100-11e3-bffd-02ee2ddab7fe'
67
68 # Создать клиента PubNub и зарегистрировать SubscribeCallback
69 pubnub = PubNub(config)
70 pubnub.add_listener(
71 SensorSubscriberCallback(df=companies_df,
72 limit=int(sys.argv[1] if len(sys.argv) > 1 else 1000))
73
Подписка на канал
Следующая команда завершает процесс подписки, указывая, что мы хотим получать сообщения от канала с именем 'pubnub-market-orders'. Метод execute запускает поток:
74 # Подписаться на канал pubnub-sensor-network и начать потоковую передачу
75 pubnub.subscribe().channels('pubnub-market-orders').execute()
76
860 Глава 16. Большие данные: Hadoop, Spark, NoSQL и IoT
Сохранение объекта Figure на экране
Второй вызов метода show библиотеки Matplotlib гарантирует, что объект Figure останется на экране, пока не будет закрыто окно.
77 plt.show() # Диаграмма остается на экране, пока не будет закрыто окно
16.9. Итоги
В этой главе мы представили концепцию больших данных, рассказали, как развивается эта отрасль, и описали программную и аппаратную инфраструктуру для работы с большими данными. Были представлены традиционные реляционные базы данных и язык SQL, а модуль sqlite3 использовался для создания и работы с базой данных books в SQLite. Также была продемонстрирована загрузка результатов запросов SQL в коллекции Pandas DataFrame.
Рассмотрены четыре основные разновидности баз данных NoSQL — базы данных «ключ-значение», документные, столбцовые и графовые базы данных, а также базы данных NewSQL. Объекты твитов JSON сохранялись в виде документов в кластере MongoDB Atlas на базе облака, а затем обобщались в интерактивной визуализации, отображаемой на карте Folium.
Далее была представлена технология Hadoop и ее применение в области больших данных. Мы настроили многоузловой кластер Hadoop с использованием сервиса Microsoft Azure HDInsight, после чего создали и выполнили задачу Hadoop MapReduce с применением потоковой передачи Hadoop.
Затем мы перешли к технологии Spark и ее применению для создания высокопроизводительных приложений больших данных, работающих в реальном времени. Мы использовали возможности программирования Spark в функциональном стиле «фильтрация/отображение/свертка» — сначала в стеке Jupyter Docker, работающем локально на вашем компьютере, а затем с многоузловым кластером Spark c использованием Microsoft Azure HDInsight. Затем был представлен механизм Spark Streaming для обработки данных мини-пакетами: в примере Spark SQL использовался для запросов на выборку данных, хранящихся в коллекции Spark DataFrame.
Глава завершается кратким введением в «интернет вещей» (IoT) и модель публикации/подписки. Средства Freeboard.io использовались для создания визуализации живого потока данных от сервиса. Мы смоделировали термо16.9.
Итоги 861
стат с подключением к интернету, который публикует сообщения на бесплатном сервисе dweet.io с использованием модуля Python Dweepy, а затем воспользовались Freeboard.io для визуализации данных смоделированного устройства. Наконец, мы подписались на поток PubNub при помощи модуля Python.
Спасибо всем читателям. Хочется верить, что книга вам понравилась, а материал показался интересным и содержательным. Надеемся, что благодаря прочитанному вы обретете необходимую уверенность для успешного применения технологий, рассмотренных в книге, и решения задач, с которыми столкнетесь в своей карьере.
Пол Дейтел, Харви Дейтел
Python: Искусственный интеллект,
большие данные и облачные вычисления
Перевел с английского Е. Матвеев
Заведующая редакцией Ю. Сергиенко
Ведущий редактор К. Тульцева
Литературные редакторы М. Петруненко, М. Рогожин
Художественный редактор В. Мостипан
Корректоры Н. Викторова, М. Молчанова
Верстка Л. Егорова
Изготовлено в России. Изготовитель: ООО «Прогресс книга».
Место нахождения и фактический адрес: 194044, Россия, г. Санкт-Петербург,
Б. Сампсониевский пр., д. 29А, пом. 52. Тел.: +78127037373.
Дата изготовления: 03.2020. Наименование: книжная продукция. Срок годности: не ограничен.
Налоговая льгота — общероссийский классификатор продукции ОК 034-2014, 58.11.12 — Книги печатные профессиональные, технические и научные.
Импортер в Беларусь: ООО «ПИТЕР М», 220020, РБ, г. Минск, ул. Тимирязева, д. 121/3, к. 214, тел./факс: 208 80 01.
Подписано в печать 19.03.20. Формат 70×100/16. Бумага офсетная. Усл. п. л. 69,660. Тираж 1000. Заказ 0000.
Download 0,77 Mb.

Do'stlaringiz bilan baham:
1   ...   12   13   14   15   16   17   18   19   20




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish