(Py)Spark中数据类型的目的是什么?

时间:2019-04-12 03:33:42

标签: apache-spark pyspark apache-spark-sql

PySpark提供了各种数据类型,但是似乎没有任何有用的方法可以调用这些类型。例如,ArrayType does not even have insert, remove, or find methods

为什么缺少方法?如果我们对数据类型无能为力,那么Spark中数据类型的目的是什么? Spark如何在内部处理这些类型?

1 个答案:

答案 0 :(得分:0)

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 functions