Изменение и сохранение кадров данных
Apache Spark предоставляет объект кадра данных в качестве основной структуры для работы с данными. Кадры данных можно использовать для запроса и преобразования данных и сохранения результатов в озере данных. Чтобы загрузить данные в кадр данных, используйте функцию spark.read , указав формат файла, путь и при необходимости схему считываемых данных. Например, следующий код загружает данные из всех CSV-файлов в папку заказов в кадр данных с именем order_details , а затем отображает первые пять записей.
order_details = spark.read.csv('/orders/*.csv', header=True, inferSchema=True)
display(order_details.limit(5))
Преобразование структуры данных
После загрузки исходных данных в кадр данных можно использовать методы объекта данных и функции Spark для его преобразования. Типичные операции с кадром данных включают:
- Фильтрация строк и столбцов
- Переименование столбцов
- Создание новых столбцов, часто производных от существующих
- Замена значений NULL или других значений
В следующем примере код использует split
функцию для разделения значений в столбце CustomerName на два новых столбца с именем FirstName и LastName. Затем он использует drop
метод для удаления исходного столбца CustomerName .
from pyspark.sql.functions import split, col
# Create the new FirstName and LastName fields
transformed_df = order_details.withColumn("FirstName", split(col("CustomerName"), " ").getItem(0)).withColumn("LastName", split(col("CustomerName"), " ").getItem(1))
# Remove the CustomerName field
transformed_df = transformed_df.drop("CustomerName")
display(transformed_df.limit(5))
Вы можете использовать полную мощность библиотеки SQL Spark для преобразования данных, отфильтровав строки, производные, удаление, переименование столбцов и любые другие необходимые изменения данных.
Сохранение преобразованных данных
После того как кадр данных находится в требуемой структуре, можно сохранить результаты в поддерживаемом формате в озере данных.
В следующем примере кода кадр данных сохраняется в файл parquet в озере данных, заменив существующий файл того же имени.
transformed_df.write.mode("overwrite").parquet('/transformed_data/orders.parquet')
print ("Transformed data saved!")
Примечание.
Формат Parquet обычно предпочтителен для файлов данных, которые будут использоваться для дальнейшего анализа или приема в аналитическое хранилище. Parquet — это очень эффективный формат, поддерживаемый большинством крупномасштабных систем аналитики данных. В самом деле, иногда требование преобразования данных может быть просто для преобразования данных из другого формата (например, CSV) в Parquet!