こんにちは
トレーニングデータにnull値が含まれれると
以下のようなエラーでnull値がありますよと、処理が落ちます。
Caused by: org.apache.spark.SparkException: Encountered null while assembling a row with handleInvalid = "keep". Consider removing nulls from dataset or using handleInvalid = "keep" or "skip". at org.apache.spark.ml.feature.VectorAssembler$.$anonfun$assemble$1(VectorAssembler.scala:288)
ですが
spark >= 2.4 から HasHandleInvalidが指定できるようになったので
assembler.setHandleInvalid("skip").transform(df).show
選べるオプションは
handleInvalid = Param(Params._dummy(), "handleInvalid", "how to handle invalid entries. " + "Options are 'skip' (filter out rows with invalid values), " + "'error' (throw an error), or 'keep' (keep invalid values in a special " + "additional bucket).",
skipはnull値を含んだ行を除外する
errorはnull値があったら例外をだす。これがdefaultです。
keepはinvalid rowはなんか適当にindexをつけてあげる、とありましたが、null値でも除外せずになんらかの値を彫り込んでくれるのかな、と理解しています。しかし、実際使い場合は
使ってみて結果をみながらオプションを検討されることをお勧めします。
以上です
参照:
sparkexception-values-to-assemble-cannot-be-null
http://spark.apache.org/docs/latest/api/python/_modules/pyspark/ml/feature.html#VectorAssembler