カスタム見積もりのtransformSchemaメソッドでは、入力データフレームのスキーマとケースクラスで定義されたスキーマを比較できる必要があります。通常、これは下記のようにGenerate a Spark StructType/Schema from a case classのように実行できます。しかし、間違ったNULL値を許可するかどうかが使用されます。正しいnull許容度を持つケースクラスのSparkスキーマ
spark.read.csv().as[MyClass]
によって推測DFの本当のスキーマは次のようになります。私が使用して比較するには
case class MySchema(CUSTOMER_ID: Int)
:
root
|-- CUSTOMER_ID: integer (nullable = false)
とケースクラス
val rawSchema = ScalaReflection.schemaFor[MySchema].dataType.asInstanceOf[StructType]
if (!rawSchema.equals(rawDf.schema))
残念ながら、これは常にfalse
スキーマを作成するとき(JA java.Integerが実際にnullの可能性があるため)、新しいスキーマとして手動でケースから推測されるクラスは
root
|-- CUSTOMER_ID: integer (nullable = true)
true
にNULL可能に設定されてどのように私はnullable = false
を指定することができますか?