Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа СУД 2023.docx
Скачиваний:
12
Добавлен:
30.07.2024
Размер:
2 Мб
Скачать
☆

2.1 Ответ на вопросы с анализом полученных данных

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

Рисунок 2.27 — Смены с самыми большими продажами

Визуализируем полученный результат на гистограмме. Результаты визуализации представлены на Рисунке 2.28.

Рисунок 2.28 — Визуализация мест с самыми большими продажами

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

Рисунок 2.29 — Лучшие чайные по продажам за январь 2023 года

Необходимо вывести информацию о днях, в которые чайная «Афимолл Сити» имела общую сумму продаж более 140 000 рублей. В ходе такого анализа можно выявить наиболее прибыльные дни или сезоны для составления планов продаж. Результаты представлены на Рисунке 2.30.

Рисунок 2.30 — Дни с продажами более 140 тысяч рублей

Визуализируем показатели с помощью гистограммы. Результаты представлены на Рисунке 2.31.

Рисунок 2.31 — Визуализация продаж чайной «Афимолл Сити»

Заключение

Понятие «Big Data» появилось в конце 1990-х годов, но начало своего пути как отдельное направление в информационных технологиях получило лишь в 2000-х годах. Настоящий взлет Big Data произошел с развитием интернета, социальных сетей, мобильных устройств, датчиков, IoT и других технологий, которые создают и накапливают большие объемы данных.

Big Data возник из-за резкого увеличения объема данных, которые создаются и накапливаются в различных областях деятельности.

В курсовой работе разработан конвейер для предобработки и маршрутизации данных с помощью VirtualBox.

Использованы продукты Apache и те, которые с ним работают.

Конвейер помогает обрабатывать большие массивы данных. В курсовой работе рассматривались данные падения метеоритов на Землю. Созданный конвейер подойдет под работу с любыми данными, где обрабатываются координаты и характеристики, привязанные к этим координатам.

Таким образом, проблема обработки данных, содержащие координаты, решена.

Цель — разработать конвейер для предобработки и маршрутизации данных с помощью VirtualBox достигнута.

Задачи, решенные в данной курсовой работе:

  • найти и выбрать данные из предоставленных источников;

  • построить конвейер на основе изученных технологий для предобработки и маршрутизации выбранных данных;

  • применить методы визуализации и анализа подготовленных данных для ответа на сформулированные преподавателем вопросы;

  • подготовить отчет о проделанной работе.

Список использованных источников

1. Теоретическая часть

  1. К. Дейт — Основы баз данных [Электронный ресурс]. Режим доступа:

  2. Apache [Электронный ресурс]. Режим доступа: https://www.apache.org/foundation/

  3. Hadoop: The Definitive Guide" — Tom White (O'Reilly Media, Inc., 2015). [Электронный ресурс]

  4. Hive [Электронный ресурс]. Режим доступа: https://hive.apache.org/

  5. Apache Sqoop User Guide" — Apache Sqoop PMC (Apache Software Foundation, 2019) [Электронный ресурс]. Режим доступа:

  6. Spark [Электронный ресурс]. Режим доступа: https://spark.apache.org/

  7. Apache Flume: Сбор распределенных журналов для Hadoop" Хари Шридхаран, O'Reilly Media, Inc., 2013 [Электронный ресурс]

  8. Kafka: Полное руководство" Неха Нархеде, Гвен Шапира и Тодд Палино, O'Reilly Media, Inc., 2017 [Электронный ресурс]

  9. Освоение MariaDB — Федерико Радззоли, Packt Publishing, 2017 [Электронный ресурс].

  10. Словарь компьютерных терминов" Джон Дейнтит, Оксфордский университетский пресс, 2016

  11. VirtualBox 6.0 Beginner's Guide" автор Тим Джонс, издательство Packt Publishing, 2019

  12. Oracle [Электронный ресурс]. Режим доступа: https://docs.oracle.com/en/virtualization/virtualbox/6.0/user/home-dir.html

  13. HDFS [Электронный ресурс] Режим доступа: https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html

  14. DataFrame [Электронный ресурс] Режим доступа: https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html

  15. Python [Электронный ресурс] Режим доступа: https://docs.python.org/3/

  16. Flume [Электронный ресурс] Режим доступа: https://flume.apache.org/

  17. Chicha San Chen [Электронный ресурс] Режим доступа: https://www.chichasanchen.com/en/

Приложения

Приложение A — код на языке программирование Python, в которой происходит подключение к базе данных, запрос 5-ти % всех строк в таблице с данными каждые 10 секунд и создание файла из полученных строк в формате CSV в папке Spooldir.

Приложение А

import csv

import pymysql

import schedule

import time

import os

# Параметры подключения к базе данных

DB_HOST = 'localhost'

DB_PORT = 3306

DB_USER = 'student'

DB_PASSWORD = 'student'

DB_NAME = 'labs'

# Папка для сохранения данных

CSV_FOLDER = '/home/student/Labs/C3U4/spooldir/'

# Запрос для получения всех строк в таблице

SQL_QUERY = 'SELECT * FROM meteor'

# Функция для выполнения запроса и сохранения данных в CSV-файл

def fetch_data_to_csv():

# Подключение к базе данных

conn = pymysql.connect(host=DB_HOST, port=DB_PORT, user=DB_USER, password=DB_PASSWORD, database=DB_NAME)

cursor = conn.cursor()

cursor.execute(SQL_QUERY)

# Получение данных из базы данных

rows = cursor.fetchall()

# Закрытие соединения

cursor.close()

conn.close()

# Разбиение данных на части по 5%

total_rows = len(rows)

rows_limit = round(total_rows * 0.05)

for i in range(0, total_rows, rows_limit):

# Генерация имени файла

filename = f"data{i//rows_limit}.csv"

file_path = os.path.join(CSV_FOLDER, filename)

# Сохранение данных в CSV-файл

with open(file_path, 'w', newline='') as file:

writer = csv.writer(file)

writer.writerow(['id', 'data', 'teahouse', 'receipts', 'cups', 'hall', 'delivery', 'yandex', 'score'])

for row in rows[i:i+rows_limit]:

writer.writerow(row)

print(f'Data fetched and saved to file {filename}')

# Задача для выполнения запроса и сохранения данных в CSV-файл

def job():

print('Fetching data...')

fetch_data_to_csv()

# Запуск задачи каждые 10 секунд

schedule.every(10).seconds.do(job)

while True:

schedule.run_pending()

time.sleep(1)