사용자 정의 견적서의 transformSchema 메소드의 경우 입력 데이터 프레임의 스키마를 사례 클래스에 정의 된 스키마와 비교할 수 있어야합니다. 일반적으로 아래에 설명 된대로 Generate a Spark StructType/Schema from a case class처럼 수행 할 수 있습니다. 그러나 잘못된 Null 허용이 사용됩니다정확한 null 허용 케이스 클래스의 Spark 스키마
root
|-- CUSTOMER_ID: integer (nullable = false)
그리고 경우 클래스 :
case class MySchema(CUSTOMER_ID: Int)
은 내가 사용하는 비교하려면 :
이spark.read.csv().as[MyClass]
에 의해 유추 안양의 실제 스키마처럼 보일 수 있습니다
val rawSchema = ScalaReflection.schemaFor[MySchema].dataType.asInstanceOf[StructType]
if (!rawSchema.equals(rawDf.schema))
불행히도 이것은 항상 false
(JA java.Integer 실제로 null이 될 수 있기 때문에) 수동의 경우 클래스에서 유추 새로운 스키마가 true
에 널 (NULL)로 설정 될 때 스키마를 만들 때,
root
|-- CUSTOMER_ID: integer (nullable = true)
어떻게 nullable = false
을 지정할 수 있습니다?