假设有一个简单的Scala case类如下:
package com.foo.storage.schema
case class Person(name: String, age: Int)
可以按照以下方式从一个case class创建Spark schema:
import org.apache.spark.sql._
import com.foo.storage.schema.Person
val schema = Encoders.product[Person].schema
我想知道在Python/PySpark中是否可以从一个case class中访问schema。我希望能够像这样做[Python]:
jvm = sc._jvm
py4j_class = jvm.com.foo.storage.schema.Person
jvm.org.apache.spark.sql.Encoders.product(py4j_class)
这会抛出一个错误 com.foo.storage.schema.Person._get_object_id 在JVM中不存在
。在Scala中,Encoders.product
是一个通用的类型,我不确定如何使用Py4J指定类型。有没有一种方法可以使用case类来创建PySpark模式?