PySpark提供了各种数据类型,但是似乎没有任何有用的方法可以调用这些类型。例如,ArrayType
does not even have insert, remove, or find methods。
为什么缺少方法?如果我们对数据类型无能为力,那么Spark中数据类型的目的是什么? Spark如何在内部处理这些类型?
答案 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。