🚗 Как найти кратчайший маршрут с помощью Apache Spark и GraphFrames
Разбираем кейс на реальных данных из OpenStreetMap — ищем оптимальный маршрут
🔍 Что делаем
1. Загружаем граф дорог города с помощью OSMnx
2. Сохраняем вершины и ребра с координатами, скоростями и геометрией
3. Загружаем всё в Spark
4. Находим кратчайший путь с помощью GraphFrames
📍 1. Скачиваем карту и строим граф улиц
📁 2. Сохраняем геометрическое описание города в формате GeoJSON и данные о вершинах и рёбрах в формате CSV
3. Используем библиотеку GraphFrames для обработки графов на Apache Spark
🧭 4. Ищем кратчайший путь по времени
например, от Измайлово до ЖК Зиларт
💡 Результат: 40 шагов от точки A до точки B.
Такой подход легко масштабируется на миллионы маршрутов. Используйте Spark и GraphFrames для построения логистических моделей, маршрутизации и городского планирования.
🚀 Хотите прокачаться в работе с Big Data? Изучайте Spark! Записывайтесь на курс Spark Developer от OTUS — учитесь на реальных данных и продвинутых кейсах: https://vk.cc/cNrOH4
🎁Пройдите тест, чтобы успеть воспользоваться 10% скидкой на курс и бонусным промокодомSpark_05 . Предложение действует до 6 июля 2025 года.
Разбираем кейс на реальных данных из OpenStreetMap — ищем оптимальный маршрут
🔍 Что делаем
1. Загружаем граф дорог города с помощью OSMnx
2. Сохраняем вершины и ребра с координатами, скоростями и геометрией
3. Загружаем всё в Spark
4. Находим кратчайший путь с помощью GraphFrames
📍 1. Скачиваем карту и строим граф улиц
import osmnx as ox
# Загрузка данных о дорогах Москвы
G = ox.graph.graph_from_place("Moscow", network_type="drive")
# Отображение дорог на карте
moscow_gdf = ox.geocoder.geocode_to_gdf("Moscow")
fig, ax = ox.plot.plot_graph(G, show=False, close=False, bgcolor="#111111", edge_color="#ffcb00", edge_linewidth=0.3, node_size=0)
moscow_gdf.plot(ax=ax, fc="#444444", ec=None, lw=1, alpha=1, zorder=-1)
# Настройка границ карты
margin = 0.02
west, south, east, north = moscow_gdf.union_all().bounds
margin_ns = (north - south) * margin
margin_ew = (east - west) * margin
ax.set_ylim((south - margin_ns, north + margin_ns))
ax.set_xlim((west - margin_ew, east + margin_ew))
plt.show()
📁 2. Сохраняем геометрическое описание города в формате GeoJSON и данные о вершинах и рёбрах в формате CSV
with open('Moscow.geojson', 'w') as file:
file.write(moscow_gdf.to_json())
nodes = G.nodes(data=True)
with open('nodes.csv', 'a') as file:
file.write("id,lat,lonn")
for (node, data) in nodes:
file.write("%d,%f,%fn" % (node, data.get("y"), data.get("x")))
edges = G.edges(data=True)
def decode_maxspeed(maxspeed):
match maxspeed:
case str():
match maxspeed.lower():
case "ru:urban": return 60
case "ru:rural": return 90
case "ru:living_street": return 20
case "ru:motorway": return 110
case _: return int(maxspeed)
case list(): return min(list(map(decode_maxspeed, maxspeed)))
case _: return maxspeed
with open('edges.csv', 'a') as file:
file.write("src,dst,maxspeed,length,geometryn")
for (src, dst, data) in edges:
maxspeed = decode_maxspeed(data.get("maxspeed", 999))
length = float(data.get("length"))
geometry = shapely.wkt.dumps(data.get("geometry"))
file.write("%d,%d,%d,%f,%sn" % (src, dst, maxspeed, length, geometry))3. Используем библиотеку GraphFrames для обработки графов на Apache Spark
from pyspark.sql import SparkSession
spark = SparkSession.builder
.config("spark.jars.packages", "graphframes:graphframes:0.8.4-spark3.5-s_2.12")
.master("local[*]")
.appName("GraphFrames")
.getOrCreate()
nodes = spark.read.options(header=True).csv("nodes.csv")
edges = spark.read.options(header=True).csv("edges.csv")
# Вычисление времени прохождения рёбер
edgesT = edges.withColumn("time", edges["length"] / edges["maxspeed"])
# Построение графа
from graphframes import *
g = GraphFrame(nodes, edgesT)
🧭 4. Ищем кратчайший путь по времени
например, от Измайлово до ЖК Зиларт
src = "257601812"
dst = "5840593081"
paths = g.shortestPaths(landmarks=[dst])
paths.filter(F.col("id") == src).show(truncate=False)
💡 Результат: 40 шагов от точки A до точки B.
Такой подход легко масштабируется на миллионы маршрутов. Используйте Spark и GraphFrames для построения логистических моделей, маршрутизации и городского планирования.
🚀 Хотите прокачаться в работе с Big Data? Изучайте Spark! Записывайтесь на курс Spark Developer от OTUS — учитесь на реальных данных и продвинутых кейсах: https://vk.cc/cNrOH4
🎁Пройдите тест, чтобы успеть воспользоваться 10% скидкой на курс и бонусным промокодом
👍4❤2
Разработка IoT для ESP32 и
ESP8266 с помощью JavaScript
Авторы: П. Ходди, Л. Прадер
Год издания: 2020
#js #ru
Скачать книгу
ESP8266 с помощью JavaScript
Авторы: П. Ходди, Л. Прадер
Год издания: 2020
#js #ru
Скачать книгу
❤5💊1
https://news.1rj.ru/str/automatedqa - справочник материалов по автоматизации тестирования
https://news.1rj.ru/str/libqa - книги по тестированию на русском и английском языках
https://news.1rj.ru/str/qajobsru - чат с вакансиями и их обсуждениями
https://news.1rj.ru/str/qa_jobs - чат с вакансиями для тестировщиков
https://news.1rj.ru/str/qa_mentors - группа для поиска менторов и менти в области QA
https://news.1rj.ru/str/aqa_chatka - чат для начинающих автоматизаторов и их старших братьев/сестер
https://news.1rj.ru/str/qajobsru - чат с вакансиями и их обсуждениями
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👎1
Python, Django, Data Science
Автор: А. В. Протодьяконов
Год издания: 2025
#python #django #ds #ru
Скачать книгу
Автор: А. В. Протодьяконов
Год издания: 2025
#python #django #ds #ru
Скачать книгу
❤2
Путеводитель в мир ручного тестирования
(24 страницы)
Автор: Максим Струков
Год издания: 2023
#qa #ru
Скачать книгу
(24 страницы)
Автор: Максим Струков
Год издания: 2023
#qa #ru
Скачать книгу
Книги по Java - канал, где вы можете бесплатно КАЧАТЬ книги по Java программированию в два клика.
🟢 качай книги
🟢 читай
🟢 становись программистом.
🚩 Все книги 2019-2025 годов. Много русскоязычных.
🗂 Подписывайтесь и качайте: @booksforjava
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Mastering Java: 100+ Solved and Commented
Exercises to Accelerate your Learning
Автор: Рухан Консейсау
Год издания: 2023
#java #en
Скачать книгу
Exercises to Accelerate your Learning
Автор: Рухан Консейсау
Год издания: 2023
#java #en
Скачать книгу
Разработка приложений с
графическим пользовательским
интерфейсом на языке Python
Автор: Букунов С. В.
Год издания: 2023
#python #ru
Скачать книгу
графическим пользовательским
интерфейсом на языке Python
Автор: Букунов С. В.
Год издания: 2023
#python #ru
Скачать книгу
❤1🔥1
Книги по машинному обучению
Скачивайте и читайте.
Machine Learning Production Systems
Автор: Di Zhu
Machine Learning System Design
Автор: Arseny Kravchenko
Introduction to Python and Large Language Models
Автор: Dilyan Grigorov
Генеративное глубокое обучение
Автор: Фостер Дэвид
GoLang for Machine Learning
Автор: Evan Atkins
Deep Reinforcement Learning with Python
Автор: Nimish Sanghi
Машинное обучение с использованием Python
Автор: Кайл Галлатин
Машинное обучение для абсолютных новичков
Автор: Оливер Теобальд
Грокаем машинное обучение
Автор: Луис Серрано
Нейросети на Python. Основы ИИ и машинного обучения
Автор: Куликова И. В.
Python 3 and Machine Learning
Автор: Oswald Campesato
Machine Learning For Network Traffic and Video Quality Analysis
Автор: Lavesh Babooram
Введение в статистическое обучение
Автор: Гарет Джеймс
Глубокое обучение на Python
Автор: Шолле Ф.
#ml #подборка
Скачивайте и читайте.
Machine Learning Production Systems
Автор: Di Zhu
Machine Learning System Design
Автор: Arseny Kravchenko
Introduction to Python and Large Language Models
Автор: Dilyan Grigorov
Генеративное глубокое обучение
Автор: Фостер Дэвид
GoLang for Machine Learning
Автор: Evan Atkins
Deep Reinforcement Learning with Python
Автор: Nimish Sanghi
Машинное обучение с использованием Python
Автор: Кайл Галлатин
Машинное обучение для абсолютных новичков
Автор: Оливер Теобальд
Грокаем машинное обучение
Автор: Луис Серрано
Нейросети на Python. Основы ИИ и машинного обучения
Автор: Куликова И. В.
Python 3 and Machine Learning
Автор: Oswald Campesato
Machine Learning For Network Traffic and Video Quality Analysis
Автор: Lavesh Babooram
Введение в статистическое обучение
Автор: Гарет Джеймс
Глубокое обучение на Python
Автор: Шолле Ф.
#ml #подборка
Telegram
Машинное обучение. Книги по программированию
Machine Learning Production Systems
Авторы: Di Zhu
Год издания: 2025
#ml #en
Скачать книгу
Авторы: Di Zhu
Год издания: 2025
#ml #en
Скачать книгу
DbBooks - канал с книгами по базам данных и алгоритмизации.
MySQL, PostgreSQL, MongoDB, Big Data: книги по этим темам в избытке у нас.
Подписывайтесь: @dbbooks
MySQL, PostgreSQL, MongoDB, Big Data: книги по этим темам в избытке у нас.
Подписывайтесь: @dbbooks
Telegram
Базы данных. Книги по программированию
Книги по базам данных и алгоритмам. Mysql, PostgreSQL и другие.
Реклама - @anothertechrock
РКН: https://clck.ru/3R3txG
Реклама - @anothertechrock
РКН: https://clck.ru/3R3txG
Programming: Principles and Practice Using C++
Автор: Bjarne Stroustrup
Год издания: 2023
#en #cpp #2O23
Скачать книгу
Автор: Bjarne Stroustrup
Год издания: 2023
#en #cpp #2O23
Скачать книгу