2016-03-20 12 views
2

私はいくつかのカテゴリの文字列を持つデータセットを持っており、それらをdouble型で表現したいと考えています。私はこの変換のためにStringIndexerを使用していましたが、NULL値を持つ別のデータセットで試したところ、java.lang.NullPointerExceptionエラーが発生し、動作しませんでした。よりよく理解するためにSparkのStringIndexerでNULL値を持つ文字列をカラムに変換する

は、ここに私のコードです:

for(col <- cols){ 
    out_name = col ++ "_" 
    var indexer = new StringIndexer().setInputCol(col).setOutputCol(out_name) 
    var indexed = indexer.fit(df).transform(df) 
    df = (indexed.withColumn(col, indexed(out_name))).drop(out_name) 
} 

それでは、どのように私はStringIndexerと、このNULLデータの問題を解決することができますか?

文字列型の分類型データをNULL値でdouble型に変換するための優れたソリューションはありますか?

答えて

1

今のところ(Spark 1.6.1)この問題は解決されていませんが、開かれたJIRA(SPARK-11569)があります。残念ながら、容認できる行動を見つけることは容易ではありません。 SQL NULLは、欠落/不明の値を表します。したがって、索引付けは無意味です。あなたがインデクサーを使用する前に

df2.na.fill("__HEREBE_DRAGONS__", "column_to_be_indexed" :: Nil) 

df.na.drop("column_to_be_indexed" :: Nil) 

または塗りつぶし:

おそらくあなたができる最善のことはNA actionsのいずれかのドロップを使用することです。