Изменение и сохранение кадров данных

Завершено

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!