1. 表中数据过亿,加载速度过慢,而我只需要加载增量数据

如:加载昨天一整天的数据,添加predicates分区,方法如下:

//predicates相当于是把昨天的数据分成一个区,其它的数据不加载
val predicates: Array[String] = Array(s"created_at >=\'" + getDateTime.getYesDate() + "\' and created_at <\'" + getDateTime.getNowDate() + "\'")
// 取得该表数据
val orderInfoDF :DataFrame = spark.read.jdbc(TiDBMysqlUrl, orderInfoTable, predicates, properties)

如果需要加载大表中全部数据,可以把数据分成多个区(读取数据库表默认是一个分区),如下是按创建时间分区,把最近三个月数据分成三个区

val predicates: Array[String] =
Array(
"2019-08-01" -> "2019-09-01",
"2019-09-01" -> "2019-10-01",
"2019-10-01" -> "2019-11-01"
).map {
case (start, end) =>
s"pay_status=1 and created_at >=\'$start\' and created_at <\'$end\'"
} // 取得该表数据
val orderInfoDF :DataFrame = spark.read.jdbc(TiDBMysqlUrl, orderInfoTable, predicates, properties)

2.每次到了最后一个stage,报内存不足错误

原因:

使用了coalesce重设Rdd的分区,可能是分区的数量发生激烈的变化,从父Rdd的几千个分区设置成几个,从而导致这个错误。

方法:

为了避免这个情况,可以设置shuffle=true,即为repartition()方法

有两种方法是可以重设Rdd的分区:分别是 coalesce()和repartition()方法,主要用来合并多个分区,以便生成少数文件

3.插入数据到Tidb里面,直接报超过最大限制条数

Caused by: java.sql.SQLException: statement count  exceeds the transact

解决方法:

可以通过修改tidb的配置,然后重启tidb,但由于运维工程师最大设置为50000,怕负载过高,只能通过批量插入到tidb里面;

由于我这边数据大概每天50万左右,大小不到10M,先是把结果储存在HDFS上,然后读取转换为dataframe格式,相当于分区=文件大小/128M(block块),

则dataframe默认只有两个分区,需要通过repartition()进行重新分区,然后插入即可,如:

resDF.rdd.getNumPartitions查看该dataframe分成几个分区

resDF.repartition().write.mode("append").jdbc(TiDBConnect.url, tableName, prop),分成11分区,保证平均每个分区小于50000即可

spark遇到的问题及解决方法的更多相关文章

  1. Spark程序运行常见错误解决方法以及优化

    转载自:http://bigdata.51cto.com/art/201704/536499.htm Spark程序运行常见错误解决方法以及优化 task倾斜原因比较多,网络io,cpu,mem都有可 ...

  2. Spark java.lang.outofmemoryerror gc overhead limit exceeded 与 spark OOM:java heap space 解决方法

    引用自:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c42246 ...

  3. Spark面对OOM问题的解决方法及优化总结 (转载)

    转载地址: http://blog.csdn.net/yhb315279058/article/details/51035631     Spark中的OOM问题不外乎以下两种情况 map执行中内存溢 ...

  4. spark sql 访问hive数据时找不mysql的解决方法

    我尝试着在classpath中加n入mysql的驱动仍不行 解决方法:在启动的时候加入参数--driver-class中加入mysql 驱动 [hadoop@master spark-1.0.1-bi ...

  5. 大数据学习系列之八----- Hadoop、Spark、HBase、Hive搭建环境遇到的错误以及解决方法

    前言 在搭建大数据Hadoop相关的环境时候,遇到很多了很多错误.我是个喜欢做笔记的人,这些错误基本都记载,并且将解决办法也写上了.因此写成博客,希望能够帮助那些搭建大数据环境的人解决问题. 说明: ...

  6. spark出现task不能序列化错误的解决方法 org.apache.spark.SparkException: Task not serializable

    import org.elasticsearch.cluster.routing.Murmur3HashFunction; import org.elasticsearch.common.math.M ...

  7. Spark OOM:java heap space,OOM:GC overhead limit exceeded解决方法

    问题描述: 在使用spark过程中,有时会因为数据增大,而出现下面两种错误: java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMe ...

  8. sc.textFile("file:///home/spark/data.txt") Input path does not exist解决方法——submit 加参数 --master local 即可解决

    use this val data = sc.textFile("/home/spark/data.txt") this should work and set master as ...

  9. kafka broker Leader -1引起spark Streaming不能消费的故障解决方法

    一.问题描述:Kafka生产集群中有一台机器cdh-003由于物理故障原因挂掉了,并且系统起不来了,使得线上的spark Streaming实时任务不能正常消费,重启实时任务都不行.查看kafka t ...

随机推荐

  1. 第02组Alpha冲刺(4/4)

    队名:十一个憨批 组长博客 作业博客 组长黄智 过去两天完成的任务:了解整个游戏的流程 GitHub签入记录 接下来的计划:继续完成游戏 还剩下哪些任务:完成游戏 燃尽图 遇到的困难:没有美术比较好的 ...

  2. vb.net 以读文本文件的方式对XML文件进行遍历

    '    对XML文件按照文本文件的方式进行遍历 Private Sub checkFile_establishEntity(strFile As String) Dim reader AsTextR ...

  3. Java集合详解2:一文读懂Queue和LinkedList

    <Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...

  4. 安装kafka + zookeeper集群

    系统:centos 7.4 要求:jdk :1.8.x kafka_2.11-1.1.0 1.绑定/etc/hosts 10.10.10.xxx      online-ops-xxx-0110.10 ...

  5. 可能是全网最好的MySQL重要知识点 | 面试必备

    可能是全网最好的MySQL重要知识点 | 面试必备  mp.weixin.qq.com 点击蓝色“程序猿DD”关注我 回复“资源”获取独家整理的学习资料! 标题有点标题党的意思,但希望你在看了文章之后 ...

  6. VS2019调试 asp.net core 2.2 出现《ANCM In-Process Handler Load Failure 发布后启动错误处理》处理

      从 google 出来的 github 上  AspNetCore issues 和 stackoverflow 搜到的,百度 博客园搜到的,CSDN 搜到的,统统设置了,不管用.   从这些问题 ...

  7. c# winform richtextbox控制每行颜色 + 滚动条始终滚动到最底部

    /// <summary> /// 输出 /// </summary> /// <param name="content"></param ...

  8. 关于 Object.defineProperty()

    通常,定义或者修改一个JS对象,有以下方式: // 1. 字面量 let obj = { name: 'cedric', age: 18 } // 2. new Object() let obj = ...

  9. SSL密钥协商过程分析

    一.说明 尽管做过证书生成.双向认证.SSL通信编程等事情,但一直不清楚SSL如何完成密钥交换.看网上的资料则众说纷纭,最近和朋友学习时聊到了这个问题,然后正巧上周处理客户反馈SSL版本过低时领导也想 ...

  10. [转帖]k8s 基本使用(上)

    k8s 基本使用(上) https://www.jianshu.com/p/8d60ce1587e1 本文将介绍 k8s 中的一些最基本的命令,并辅以解释一些基本概念来方便理解,也就是说,本文是一篇偏 ...