💵 Как стать Data Engineer
🗄 Смотри Roadmap в закрепе!
_____________________________
Автор @halltape
Все вопросы по рекламе @k_shredinger
Post #801
3.4K
500_2000s.csv341.9 KB
📊 Мне друг подкинул интересную задачу
Объединение ДАМПОВ ДАННЫХ Discogs (Releases + Labels)
В чем сложность?
Есть два датасета: релизы и лейблы (Оба в формате XML).
Один весит 60Гб. Другой 400Мб.
Локально обработать 400Мб не проблема — это изи. А вот распарсить 60Гб и вытянуть оттуда только нужны период — хард задача.
Что нужно сделать:
1. Взять данные по релизам за последние 1.5–2 года
2. Сделать JOIN двух таблиц по названию лейбла (или по id)
В чем смысл?
В таблице releases (60Гб) надо взять названия лейблов, которые делали релизы за последние 2 года. Склеить их со справочной информацией из labels. Джойнить по id или по названию (выбрать ключ самостоятельно).
Датасеты (XML):
• Labels: https://data.discogs.com/?download=data%2F2026%2Fdiscogs_20260301_labels.xml.gz
• Releases: https://data.discogs.com/?download=data%2F2026%2Fdiscogs_20260301_releases.xml.gz
(Также есть семпл релизов во вложении — можно использовать для первичной проверки)
Пример чтения XML через PySpark:
Кто че думает? Какими инструментами бы обработали?
✅Update: витрину построили! Добавлю эту задачу в BootCamp!
Объединение ДАМПОВ ДАННЫХ Discogs (Releases + Labels)
В чем сложность?
Есть два датасета: релизы и лейблы (Оба в формате XML).
Один весит 60Гб. Другой 400Мб.
Локально обработать 400Мб не проблема — это изи. А вот распарсить 60Гб и вытянуть оттуда только нужны период — хард задача.
Что нужно сделать:
1. Взять данные по релизам за последние 1.5–2 года
2. Сделать JOIN двух таблиц по названию лейбла (или по id)
В чем смысл?
В таблице releases (60Гб) надо взять названия лейблов, которые делали релизы за последние 2 года. Склеить их со справочной информацией из labels. Джойнить по id или по названию (выбрать ключ самостоятельно).
Датасеты (XML):
• Labels: https://data.discogs.com/?download=data%2F2026%2Fdiscogs_20260301_labels.xml.gz
• Releases: https://data.discogs.com/?download=data%2F2026%2Fdiscogs_20260301_releases.xml.gz
(Также есть семпл релизов во вложении — можно использовать для первичной проверки)
Я планирую сегодня попробовать это все локально обработать. Спарк с моими 8-ми ядрами за минут 30-40 проходит. Но проблема в том, что трудно выцепить именно данные за определенный промежуток. Вот думаю.. возможно можно как-то обойти..
Пример чтения XML через PySpark:
import os
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.appName("SparkExample") \
.config(
"spark.jars.packages",
"com.databricks:spark-xml_2.12:0.18.0"
) \
.getOrCreate()
from pyspark.sql.functions import max
df = (
spark.read
.format("xml")
.option("rowTag", "label")
.load("discogs_20260301_labels.xml")
)
df.show()
Кто че думает? Какими инструментами бы обработали?
✅Update: витрину построили! Добавлю эту задачу в BootCamp!
- ❤ 8
- 👍 5
- 🔥 3










