私は、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を読むときにこのエラーが発生するだけです。彼らは他のものよりも小数点を持つことができますか?
:上
... .cast(DecimalType(6)))
読む:
はこれを試してみてください。 「自明」の定義については... –
ありがとう! [ここに興味があればフォローアップがあります](https://stackoverflow.com/questions/44296484/how-do-i-set-infinite-or-nan-values-to-0-in-spark) –