我有一個大型的DataFrame由〜550列的雙打和兩列長(ids)組成。從csv讀取550列,並添加兩個id列。唯一的其他東西,我用數據做的是一些從字符串CSV數據更改爲雙打 - 0(「INF」>「0」,則轉換列一倍)和替換NaN的:如何增加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時只會遇到這個錯誤。他們可以比其他人有更多的小數?
哈哈。對於「自解釋」的某些定義... –
謝謝! [如果你感興趣,這是一個後續行動](https://stackoverflow.com/questions/44296484/how-do-i-set-infinite-or-nan-values-to-0-in-spark) –