随笔分类 - spark
摘要:累加器 val dataRdd = sc.makeRDD(List(1, 2, 3, 4), 2) var sum = 0 //累加器可以收集driver和各个excuter中累加的结果 //如果此处删除累加器,用java的算法sum=sum+i那么结果是0,driver端的sum就是0,缺有无法得
阅读全文
摘要:mapParitions的优缺点: mapParitions可以对一个RDD中所有的分区进行遍历 mappartitions.效率优于map算子,减少了发送到执行器执行交互次数 mappartitions内存溢出是当一个分区数据过大,发送时执行的exctuer可能放不下,出现OOM mapParti
阅读全文
摘要:记事本内容: 打印结构: 结果展示: parquet的优势 支持列存储+嵌套数据格式+适配多个计算框架 节省表扫描时间和反序列的时间 压缩技术稳定出色,节省存储空间 Spark操作 Parquet文件比操作CSV等普通文件的速度更快 加载数据:sparkSession.read.parquet(“/
阅读全文
摘要:1.原始数据 Key value Transformations(example: ((1, 2), (3, 4), (3, 6))) 2. flatMap测试示例 执行结果: 3.distinct、reducebykey、groupbykey 4.combineByKey(create Combi
阅读全文
摘要:案例1 到源码中查看,发现读取HBase数据时使用了重分区算子。 原本Spark在使用RDD模式拉取HBase数据时,会根据资源分配平均地拉取数据到各个节点。但是这里使用了重分区,导致各节点拉取到数据之后,根据resultMap这个对象的Hash值进行了shuffle,导致了数据倾斜。 将重分区算子
阅读全文
摘要:当出现Kafka单个分区数据量很大,但每个分区的数据量很平均的情况时,我们往往采用下面两种方案增加并行度: l 增加Kafka分区数量 l 对拉取过来的数据执行repartition 但是针对这种情况,前者的改动直接影响所有使用消费队列的模型性能,后者则存在一个shuffle的性能消耗。有没有既不会
阅读全文
摘要:rdd的计算对于transformation是lazy形式,只有在ation时才会进行计算。并且计算结果默认是临时的,用过即丢弃。 1.对多次使用的RDD进行(缓存)持久化: cache/persist后的rdd,没有使用前千万不要unpersist,unpersist就把缓存给清空了。 cache
阅读全文
摘要:SparkStreaming中foreachRDD SparkStreaming是流式实时处理数据,就是将数据流按照定义的时间进行分割(就是“批处理”)。每一个时间段内处理的都是一个RDD。而SparkStreaming中的foreachRDD方法就是在处理每一个时间段内的RDD数据。 DStrea
阅读全文
摘要:Spark 读写HBase优化 读数据 可以采用RDD的方式读取HBase数据: val conf = HBaseConfiguration.create() conf.set(TableInputFormat.INPUT_TABLE, hTabName) //设置查询的表名 val rdd = s
阅读全文
摘要:参考:jianshu.com/p/9d2d225c1951 监听socket获取数据,代码如下:这里使用nc -lk 9999 在ip为10.121.33.44的机器上发送消息 object SocketStream { def main(args: Array[String]): Unit = {
阅读全文
摘要:/** * scala模型的main(args:Array[String])是业务执行入口 * org.apache.spark.{SparkConf, SparkContext} * val sparkConf =new SparkConf().setAppName(appName) * val
阅读全文
摘要:数据倾斜 当某个job长时间运行没有结束,可能发生了数据倾斜。 简单的讲,数据倾斜就是我们在计算数据的时候,数据的分散度不够,导致大量的数据集中到了一台或者几台机器上计算,这些数据的计算速度远远低于平均计算速度,导致整个计算过程过慢。 hive 比如说在Hive中,经常遇到count(distinc
阅读全文
摘要:api差异参考官网地址:https://spark.apache.org/docs/2.1.1/sql-programming-guide.html#upgrading-from-spark-sql-16-to-20 1.SparkSession is now the new entry point
阅读全文
摘要:序列化问题多事rdd遍历过程中使用了没有序列化的对象。 1.将未序列化的变量定义到rdd遍历内部。如定义入数据库连接池。 2.常量定义里包含了未序列化对象 ,提出去吧 如下常量要放到main里,不能放到rdd的遍历中。
阅读全文
摘要:给union的前后sql加括号就可以解决
阅读全文
摘要:1.spark api主要分两种:转换操作和行动操作。如果在转化操作中println spark打印了 我也看不到。 2.打印RDD的元素 参考:https://strongyoung.gitbooks.io/spark-programming-guide/rdds/rdd_operations/p
阅读全文
摘要:error:org.apache.spark.shuffle.FetchFailedException: Failed to connect to xxxx/xx.xx.xx.xx:xxxx 定位来定位去与防火墙等无关。反复查看日志: 2019-09-30 11:00:46,521 | WARN |
阅读全文
摘要:failure: Lost task 18.3 in stage 17.0 (TID 59784,XXXXX, executor 19): java.lang.IllegalArgumentException: Row length is 0 场景是写入hbase: 当取出的line._1做为row
阅读全文
摘要:1.foreach 2.foreachPartition 说明: foreachPartition属于算子操作,可以提高模型效率。比如在使用foreach时,将RDD中所有数据写Mongo中,就会一条数据一条数据地写,每次函数调用可能就会创建一个数据库连接,此时就势必会频繁地创建和销毁数据库连接,性
阅读全文
摘要:如果一次处理后的数据太多,一下字发送kafka就会导致kafka对赛,那就然他睡几毫秒。不可可根据业务数据调试。每分钟100万左右就可以了吧。
阅读全文

浙公网安备 33010602011771号