Какова цель типов данных в (Py) Spark?

#apache-spark #pyspark #apache-spark-sql

#apache-spark #pyspark #apache-spark-sql

Вопрос:

PySpark предлагает различные типы данных, однако, похоже, нет никакого полезного метода, который мы могли бы вызвать для этих типов. Например, ArrayType даже не имеет методов insert, remove или find .

Почему это отсутствие методов? Какова цель типов данных в Spark, если мы ничего не можем с ними сделать? Как Spark обрабатывает эти типы внутри?

Комментарии:

1. Типы предназначены для описания схем. Вы не вставляете и не считываете схемы, это просто метаданные. Фактические данные находятся где-то в другом месте.

Ответ №1:

Типы Spark не похожи на объекты в языках по умолчанию. Они предназначены для сериализации, позволяя Spark хранить данные в любом формате, который он поддерживает, а именно: json, parquet, orc, csv и так далее, что позволит вам сохранить тип при записи в ваше хранилище.

Чтобы иметь больше способов обработки типов, Spark (Scala) позволяет использовать DataSets их case class для определения ваших типов. Затем вы можете использовать примитивные типы для обработки запросов.

 import spark.implicits._
case class MyData(str1: String, int1: Int, arr1: Array[String])
spark.read.table("my_table").as[MyData]
  

Для PySpark это немного сложнее, но вам не нужно беспокоиться о сериализации.

Если вам нужно манипулировать типами в PySpark, вы можете использовать функции sql.