博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spark从postgresql导入数据至mongodb报错: Decimal precision 39 exceeds max precision 38
阅读量:2427 次
发布时间:2019-05-10

本文共 3749 字,大约阅读时间需要 12 分钟。

今天使用spak从postgresql 往mongodb 导入数据时出现以下错误:

9/02/25 16:47:21 INFO DAGScheduler: Job 0 failed: foreachPartition at MongoSpark.scala:117, took 16.897605 sorg.apache.spark.SparkException: Job aborted due to stage failure: Task 16 in stage 0.0 failed 4 times, most recent failure: Lost task 16.3 in stage 0.0 (TID 77, tod4, executor 5): java.lang.IllegalArgumentException: requirement failed: Decimal precision 39 exceeds max precision 38	at scala.Predef$.require(Predef.scala:224)	at org.apache.spark.sql.types.Decimal.set(Decimal.scala:114)	at org.apache.spark.sql.types.Decimal$.apply(Decimal.scala:453)	at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$org$apache$spark$sql$execution$datasources$jdbc$JdbcUtils$$makeGetter$3$$anonfun$12.apply(JdbcUtils.scala:398)	at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$org$apache$spark$sql$execution$datasources$jdbc$JdbcUtils$$makeGetter$3$$anonfun$12.apply(JdbcUtils.scala:398)	at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$.org$apache$spark$sql$execution$datasources$jdbc$JdbcUtils$$nullSafeConvert(JdbcUtils.scala:500)	at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$org$apache$spark$sql$execution$datasources$jdbc$JdbcUtils$$makeGetter$3.apply(JdbcUtils.scala:398)	at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$org$apache$spark$sql$execution$datasources$jdbc$JdbcUtils$$makeGetter$3.apply(JdbcUtils.scala:396)	at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anon$1.getNext(JdbcUtils.scala:347)	at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anon$1.getNext(JdbcUtils.scala:329)	at org.apache.spark.util.NextIterator.hasNext(NextIterator.scala:73)	at org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)	at org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:32)	at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage1.processNext(Unknown Source)	at org.apache.spark.sql.execution.BufferedRowIterator.hasNext(BufferedRowIterator.java:43)	at org.apache.spark.sql.execution.WholeStageCodegenExec$$anonfun$10$$anon$1.hasNext(WholeStageCodegenExec.scala:614)	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:408)	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:408)	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:408)	at scala.collection.Iterator$class.isEmpty(Iterator.scala:330)	at scala.collection.AbstractIterator.isEmpty(Iterator.scala:1336)	at scala.collection.TraversableOnce$class.nonEmpty(TraversableOnce.scala:111)	at scala.collection.AbstractIterator.nonEmpty(Iterator.scala:1336)	at com.mongodb.spark.MongoSpark$$anonfun$save$1.apply(MongoSpark.scala:117)	at com.mongodb.spark.MongoSpark$$anonfun$save$1.apply(MongoSpark.scala:117)	at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:929)	at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:929)	at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2067)	at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2067)	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)	at org.apache.spark.scheduler.Task.run(Task.scala:109)	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:345)	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)	at java.lang.Thread.run(Thread.java:748)

报错显示是Decimal精度问题,spark api文档中对DecimalType的描述如下,它的最大精度是38。

在这里插入图片描述

查看postgresql中原表的数据类型。

在这里插入图片描述
发现预算年度的精度大大超出spark 中Decimal类型的精度。修改预算年度字段的类型为numeric(10,0)。再次重新导入,成功。

转载地址:http://ezjmb.baihongyu.com/

你可能感兴趣的文章
阿里巴巴架构师:十问业务中台和我的答案
查看>>
华为云发布三类六款计算实例 打造更强云端计算能力
查看>>
PHP 语言地位遭受挑战,PHP 程序员路在何方?
查看>>
PostgreSQL好评如潮,它是如何做到的?
查看>>
2017码云群英会,共享开源技术盛宴
查看>>
看完这份参会指南,Get 2017 OSC 年终盛典正确参会姿势!
查看>>
盛食厉兵 中科天玑挖掘大数据价值助力行业数字化转型
查看>>
白鹭引擎正式支持微信小游戏开发
查看>>
2018年,你所不知道的Jira!
查看>>
2017年,阿里巴巴开源的那些事
查看>>
这有一节价值30美元的AI免费课等您领取
查看>>
推动边缘计算的七项核心技术
查看>>
边缘计算精华问答 | 边缘计算需要IaaS、PaaS、SaaS等服务能力吗?
查看>>
Spark精华问答 | Spark 会替代Hadoop 吗?
查看>>
豆瓣已玩烂,来爬点有逼格的 ——IMDB 电影提升你的品位
查看>>
一部刷爆朋友圈的5G短片,看完才知道5G多暖多重要!
查看>>
要闻君说:华云数据“豪气”收购超融合厂商Maxta;VMware有意“携手”微软Azure云;亚马逊获3亿美元云计算合同...
查看>>
SDN精华问答 | SDN可以做什么?
查看>>
云评测 | 开发者最有用的开源云监控工具有哪些呢? 这7款神器总有一款适合你!...
查看>>
小团队的微服务之路
查看>>