spark遇到的问题及解决方法
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遇到的问题及解决方法的更多相关文章
- Spark程序运行常见错误解决方法以及优化
转载自:http://bigdata.51cto.com/art/201704/536499.htm Spark程序运行常见错误解决方法以及优化 task倾斜原因比较多,网络io,cpu,mem都有可 ...
- Spark java.lang.outofmemoryerror gc overhead limit exceeded 与 spark OOM:java heap space 解决方法
引用自:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c42246 ...
- Spark面对OOM问题的解决方法及优化总结 (转载)
转载地址: http://blog.csdn.net/yhb315279058/article/details/51035631 Spark中的OOM问题不外乎以下两种情况 map执行中内存溢 ...
- spark sql 访问hive数据时找不mysql的解决方法
我尝试着在classpath中加n入mysql的驱动仍不行 解决方法:在启动的时候加入参数--driver-class中加入mysql 驱动 [hadoop@master spark-1.0.1-bi ...
- 大数据学习系列之八----- Hadoop、Spark、HBase、Hive搭建环境遇到的错误以及解决方法
前言 在搭建大数据Hadoop相关的环境时候,遇到很多了很多错误.我是个喜欢做笔记的人,这些错误基本都记载,并且将解决办法也写上了.因此写成博客,希望能够帮助那些搭建大数据环境的人解决问题. 说明: ...
- spark出现task不能序列化错误的解决方法 org.apache.spark.SparkException: Task not serializable
import org.elasticsearch.cluster.routing.Murmur3HashFunction; import org.elasticsearch.common.math.M ...
- Spark OOM:java heap space,OOM:GC overhead limit exceeded解决方法
问题描述: 在使用spark过程中,有时会因为数据增大,而出现下面两种错误: java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMe ...
- 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 ...
- kafka broker Leader -1引起spark Streaming不能消费的故障解决方法
一.问题描述:Kafka生产集群中有一台机器cdh-003由于物理故障原因挂掉了,并且系统起不来了,使得线上的spark Streaming实时任务不能正常消费,重启实时任务都不行.查看kafka t ...
随机推荐
- PATA1082Read Number in Chinese
有几点需要注意的地方一是将right转化为与left在在同一节 while (left + 4 <= right) { right -= 4;//每次将right移动4位,直到left与righ ...
- 【BigData】Java基础_类和对象的基本使用
1.需求描述 ①定义一个学生类,然后根据该类创建3个具体的学生对象 类中包含信息:学生姓名.学号.年龄.性别.所在地址 ②将这三个学生对象存入到数组中 ③然后将数组对象按照学生的年龄倒序排序 2.代码 ...
- makefile小计
1. makefile格式如下,想要生成code.o,就要指定它依赖哪些东西.比如这里是依赖code.cpp这个文件 然后如何生成,换行+tab(与python类似,通过tab区分下面的是生成的命令) ...
- Docker&持续集成与容器管理--系列教程
一 Docker简介 Docker介绍 Docker架构 二 Docker安装 Ubuntu Docker 安装 CentOS Docker 安装 Windows Docker 安装 MacOS Do ...
- OpenSSL创建证书
使用OpenSSL创建证书.采用的OS为CentOS7. 1. 修改OpenSSL的配置文件 vim /etc/pki/tls/openssl.cnf [ CA_default ] dir = /et ...
- mysql主从复制报错解决方案
mysql主从复制报错解决方案 我先制造个错误 在slave删除个info3字段 然后在master 在info3插入数据 报错如下<pre> Last_SQL_Errno: 1054 L ...
- [原创]开源跨平台大型网络端口扫描器K8PortScan(支持批量A段/B段/C段/IP列表)
0x000 K8PortScan Python版Cscan端口扫描器 Code: https://github.com/k8gege/K8PortScan K8portScan 1.0 Date: 2 ...
- golang面对对象
- 【leetcode-49】字母异位词分组
给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "tan&quo ...
- c#---Socean.RPC框架实测[并发量13w][响应时间0.04ms]
目录1.高性能RPC框架:Socean.RPC 前言 经过一段时间的优化,Socean.RPC的性能又提高了一些,不过这差不多是socketAPM模型的极限了.本框架仅仅2000多行代码,无第三方框架 ...