2017-05-31 18 views
1

私は、550列のdoubleと2列のlong(ids)で構成される大きなDataFrameを持っています。 550列はcsvから読み込まれており、2つのid列が追加されています。私はデータで行う唯一の他のものはダブルスに弦からCSVデータの一部を変更で - と0ではNaNに置き換わる(「Infを」>「0」は、その後倍増する列をキャスト):Sparkで小数精度をどのように増やすのですか?

df = df.withColumn(col.name + "temp", 
          regexp_replace(
           regexp_replace(df(col.name),"Inf","0") 
           ,"NaN","0").cast(DoubleType)) 
df = df.drop(col.name).withColumnRenamed(col.name + "temp",col.name) 
df = df.withColumn("timeId", monotonically_increasing_id.cast(LongType)) 
df = df.withColumn("patId", lit(num).cast(LongType)) 
df = df.na.fill(0) 

IllegalArgumentException: requirement failed: Decimal precision 6 exceeds max precision 5 

あり、行の数十万人があり、私は複数のCSVからのデータに読んでいる:私は、私は次のエラーを取得すると、カウントを行います。小数精度はどのようにして増やすのですか?何か他に起こっていることはありますか?私はいくつかのcsvsを読むときにこのエラーが発生するだけです。彼らは他のものよりも小数点を持つことができますか?

答えて

1
+0

:上

... .cast(DecimalType(6)))

読む:

はこれを試してみてください。 「自明」の定義については... –

+0

ありがとう! [ここに興味があればフォローアップがあります](https://stackoverflow.com/questions/44296484/how-do-i-set-infinite-or-nan-values-to-0-in-spark) –

関連する問題