小编Kou*_*hik的帖子

火花错误 - 小数精度 39 超过最大精度 38

当我尝试从 Spark 数据帧收集数据时,出现错误提示

“java.lang.IllegalArgumentException:要求失败:小数精度 39 超过最大精度 38”。

Spark 数据帧中的所有数据都来自 Oracle 数据库,我相信小数精度小于 38。有什么方法可以在不修改数据的情况下实现这一目标?

# Load required table into memory from Oracle database
df <- loadDF(sqlContext, source = "jdbc", url = "jdbc:oracle:thin:usr/pass@url.com:1521" , dbtable = "TBL_NM")

RawData <- df %>% 
    filter(DT_Column > DATE(‘2015-01-01’))

RawData <- as.data.frame(RawData)
Run Code Online (Sandbox Code Playgroud)

给出错误

以下是堆栈跟踪:

警告 TaskSetManager:在阶段 0.0 中丢失任务 1.0(TID 1、10。 ..***, executor 0): java.lang.IllegalArgumentException: 要求失败:在 org.apache.spark.sql.types 的 scala.Predef$.require(Predef.scala:224) 处,小数精度 39 超过最大精度 38。 Decimal.set(Decimal.scala:113) at org.apache.spark.sql.types.Decimal$.apply(Decimal.scala:426) at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$ anonfun$org$apache$spark$sql$execution$datasources$jdbc$JdbcUtils$$makeGetter$3$$anonfun$9.apply(JdbcUtils.scala:337) 在 org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils $$anonfun$org$apache$spark$sql$execution$datasources$jdbc$JdbcUtils$$makeGetter$3$$anonfun$9.apply(JdbcUtils.scala:337) 在 org.apache.spark.sql.execution.datasources.jdbc .JdbcUtils$.org$apache$spark$sql$execution$datasources$jdbc$JdbcUtils$$nullSafeConvert(JdbcUtils.scala:438) 在 org.apache.spark.sql。execution.datasources.jdbc.JdbcUtils$$anonfun$org$apache$spark$sql$execution$datasources$jdbc$JdbcUtils$$makeGetter$3.apply(JdbcUtils.scala:337) 在 …

oracle r rstudio apache-spark

5
推荐指数
1
解决办法
6164
查看次数

标签 统计

apache-spark ×1

oracle ×1

r ×1

rstudio ×1