SQL проти PySpark: Основні запити для обробки даних

pic

Вступ

Мова запитів структурованих даних (SQL) є добре відомою мовою, яка використовується для управління та запитів до реляційних баз даних. Вона здобула популярність завдяки своїй простоті та ефективності у роботі з структурованими даними, збереженими в традиційних базах даних, таких як MySQL, PostgreSQL та SQL Server. SQL надає декларативний підхід для взаємодії з даними, що робить її основним інструментом для аналітиків даних та інженерів.

PySpark, зі свого боку, є Python API для Apache Spark — потужної системи розподілених обчислень, призначеної для обробки великих обсягів даних. PySpark дозволяє фахівцям з даних використовувати можливості розподілених обчислень Spark, при цьому працюючи зі звичним для них Python. Цей інструмент особливо корисний для обробки великих даних і виконання складних трансформацій та аналітики на розподілених наборах даних.

У цій статті порівнюються десять основних SQL-запитів з їх еквівалентами в PySpark, щоб допомогти фахівцям з даних ефективно переходити між цими двома інструментами.

1. Фільтрація даних

SQL-запит:

SELECT * FROM employees WHERE salary > 50000;

Еквівалент в PySpark:

employees.filter(employees.salary > 50000).show()

2. Вибір конкретних стовпців

SQL-запит:

SELECT name, department FROM employees;

Еквівалент в PySpark:

employees.select("name", "department").show()

3. Агрегація з Group By

SQL-запит:

SELECT department, COUNT(*) AS employee_count FROM employees GROUP BY department;

Еквівалент в PySpark:

employees.groupBy("department").count().show()

4. Сортування даних

SQL-запит:

SELECT * FROM employees ORDER BY salary DESC;

Еквівалент в PySpark:

employees.orderBy(employees.salary.desc()).show()

5. Об’єднання таблиць

SQL-запит:

SELECT e.name, d.department_name  
FROM employees e  
JOIN departments d ON e.department_id = d.department_id;

Еквівалент в PySpark:

employees.join(departments, employees.department_id == departments.department_id) \  
 .select(employees.name, departments.department_name).show()

6. Підрахунок рядків

SQL-запит:

SELECT COUNT(*) FROM employees;

Еквівалент в PySpark:

employees.count()

7. Обчислення середньої зарплати

SQL-запит:

SELECT AVG(salary) AS average_salary FROM employees;

Еквівалент в PySpark:

from pyspark.sql.functions import avg  
employees.select(avg("salary")).show()

8. Перейменування стовпців

SQL-запит:

SELECT name AS employee_name FROM employees;

Еквівалент в PySpark:

employees.withColumnRenamed("name", "employee_name").show()

9. Видалення дублюючих рядків

SQL-запит:

SELECT DISTINCT * FROM employees;

Еквівалент в PySpark:

employees.dropDuplicates().show()

10. Додавання нового стовпця

SQL-запит:

SELECT *, salary * 1.1 AS increased_salary FROM employees;

Еквівалент в PySpark:

from pyspark.sql.functions import col  
employees.withColumn("increased_salary", col("salary") * 1.1).show()

Висновок

SQL та PySpark мають свої сильні сторони і є необхідними інструментами в арсеналі фахівців з даних. SQL відмінно підходить для запитів до структурованих даних в реляційних базах даних, тоді як PySpark прекрасно справляється з обробкою великих обсягів даних і розподіленими обчисленнями. Зрозумівши подібності та відмінності між SQL-запитами та їх еквівалентами в PySpark, фахівці з даних можуть ефективно переходити між цими двома технологіями залежно від вимог проєкту.

Будьте дисциплінованими, цікавіть, і нехай дані направляють вас.

Дякую за прочитання.

Не забудьте підписатися та слідкувати за новими статтями. Якщо ви хочете обговорити тему детальніше, не соромтесь звертатися до мене через соціальні мережі нижче.

Перекладено з: SQL vs. PySpark: Top Queries for Data Processing

Leave a Reply

Your email address will not be published. Required fields are marked *