首页
学习
活动
专区
工具
TVP
发布

我是攻城师

专栏作者
492
文章
957861
阅读量
119
订阅数
在Java里面如何解决进退两难的jar包冲突问题?
es api组件依赖guava18.0,spark项目由于业务需要写入es所以需要依赖es ,但spark项目的环境又需要依赖guava14.0,如果换成高版本可能会报错,这个决定了你不能都使用统一的低版本或者高版本来规避此问题,因此必须面对现实。
我是攻城师
2019-07-27
3K0
如何在spark里面使用窗口函数
在大数据分析中,窗口函数最常见的应用场景就是对数据进行分组后,求组内数据topN的需求,如果没有窗口函数,实现这样一个需求还是比较复杂的,不过现在大多数标准SQL中都支持这样的功能,今天我们就来学习下如何在spark sql使用窗口函数来完成一个分组求TopN的需求。
我是攻城师
2019-06-25
4.1K0
Spark中foreachPartition和mapPartitions的区别
Spark的运算操作有两种类型:分别是Transformation和Action,区别如下: Transformation:代表的是转化操作就是我们的计算流程,返回是RDD[T],可以是一个链式的转化
我是攻城师
2018-05-14
2.8K0
Spark任务两个小问题笔记
今天在用spark处理数据的时候,遇到两个小问题,特此笔记一下。 两个问题都与网络交互有关,大致处理场景是,在driver端会提前获取组装一批数据,然后把这些数据发送executor端进行后续处理。 问题一:序列化异常 driver有一个case class类需要封装一些数据发送到executor上,原来都是scala的类,直接发送到executor上执行没问题,而且也没加序列化的注解,原因是因为scala会自动给函数方法序列化,因为这个类出现在函数中,所以也没事,但今天在这个类里面又加了一个java的be
我是攻城师
2018-05-14
5540
使用Spark SQL的临时表解决一个小问题
最近在使用spark处理一个业务场景时,遇到一个小问题,我在scala代码里,使用spark sql访问hive的表,然后根据一批id把需要的数据过滤出来,本来是非常简单的需求直接使用下面的伪SQL即可: 但现在遇到的问题是id条件比较多,大概有几万个,这样量级的in是肯定会出错的,看网上文章hive的in查询超过3000个就报错了。 如何解决? 主要有两种解决方法: (一)分批执行,就是把几万个id,按3000一组查询一次,最后把所有的查询结果在汇合起来。 (二)使用join,把几万个id创建成一张hiv
我是攻城师
2018-05-14
2.5K0
Spark如何读取一些大数据集到本地机器上
最近在使用spark处理分析一些公司的埋点数据,埋点数据是json格式,现在要解析json取特定字段的数据,做一些统计分析,所以有时候需要把数据从集群上拉到driver节点做处理,这里面经常出现的一个问题就是,拉取结果集过大,而驱动节点内存不足,经常导致OOM,也就是我们常见的异常: 这种写法的代码一般如下: 上面的这种写法,基本原理就是一次性把所有分区的数据,全部读取到driver节点上,然后开始做处理,所以数据量大的时候,经常会出现内存溢出情况。 (问题一)如何避免这种情况? 分而治之,每次只拉取一个
我是攻城师
2018-05-14
1.9K0
如何管理Spark Streaming消费Kafka的偏移量(一)
最近工作有点忙,所以更新文章频率低了点,在这里给大家说声抱歉,前面已经写过在spark streaming中管理offset,但当时只知道怎么用,并不是很了解为何要那样用,最近一段时间又抽空看了一个github开源程序自己管理offset的源码,基本已经理解透彻了,当然这里面还包含了由于理解不透彻导致升级失败的一个案例,这个在下篇文章会分享出来。本篇我们先从理论的角度聊聊在Spark Streaming集成Kafka时的offset状态如何管理。 spark streaming 版本 2.1 kafka 版
我是攻城师
2018-05-14
1.6K0
理解Spark的运行机制
Spark生态系统目前已经非常成熟了,有很多类型的任务都可以使用spark完成,我们先看下spark生态系统的组成: spark的核心主要由3个模块组成: (1)spark core 是spark的最
我是攻城师
2018-05-14
2.1K0
如何管理Spark Streaming消费Kafka的偏移量(三)
前面的文章已经介绍了在spark streaming集成kafka时,如何处理其偏移量的问题,由于spark streaming自带的checkpoint弊端非常明显,所以一些对数据一致性要求比较高的项目里面,不建议采用其自带的checkpoint来做故障恢复。 在spark streaming1.3之后的版本支持direct kafka stream,这种策略更加完善,放弃了原来使用Kafka的高级API自动保存数据的偏移量,之后的版本采用Simple API也就是更加偏底层的api,我们既可以用chec
我是攻城师
2018-05-14
1.1K0
谈谈如何优雅的关闭正在运行中的Spark Streaming的流程序
前面的文章,已经简单提到过怎么样关闭流程序。因为Spark Streaming流程序比较特殊,所以不能直接执行kill -9 这种暴力方式停掉,如果使用这种方式停程序,那么就有可能丢失数据或者重复消费数据。 为什么呢?因为流程序一旦起来基本上是一个7*24小时的状态,除非特殊情况,否则是不会停的,因为每时每刻都有可能在处理数据,如果要停,也一定要确认当前正在处理的数据执行完毕,并且不能在接受新的数据,只有这样才能保证不丢不重。 如何优雅的关闭spark streaming呢?方式主要有三种: 第一种:全人工
我是攻城师
2018-05-14
1.6K0
kafka版本不一致导致的一个小问题(二)
背景介绍: 我们公司的实时流项目现在用的spark streaming比较多,这里再说下版本: spark streaming2.1.0 kafka 0.9.0.0 spark streaming如果
我是攻城师
2018-05-14
2.2K0
在scala中使用spark sql解决特定需求
Spark sql on hive的一个强大之处就是能够嵌在编程语言内执行,比如在Java或者Scala,Python里面,正是因为这样的特性,使得spark sql开发变得更加有趣。 比如我们想做一个简单的交互式查询,我们可以直接在Linux终端直接执行spark sql查询Hive来分析,也可以开发一个jar来完成特定的任务。 有些时候单纯的使用sql开发可能功能有限,比如我有下面的一个功能: 一张大的hive表里面有许多带有日期的数据,现在一个需求是能够把不同天的数据分离导入到不同天的es索引里面,方
我是攻城师
2018-05-14
1.3K0
在scala中使用spark sql解决特定需求(2)
接着上篇文章,本篇来看下如何在scala中完成使用spark sql将不同日期的数据导入不同的es索引里面。 首下看下用到的依赖包有哪些: 下面看相关的代码,代码可直接在跑在win上的idea中,使用的是local模式,数据是模拟造的: 分析下,代码执行过程: (1)首先创建了一个SparkSession对象,注意这是新版本的写法,然后加入了es相关配置 (2)导入了隐式转化的es相关的包 (3)通过Seq+Tuple创建了一个DataFrame对象,并注册成一个表 (4)导入spark sql后,执行了一
我是攻城师
2018-05-14
7720
如何使用scala+spark读写hbase?
最近工作有点忙,所以文章更新频率低了点,希望大家可以谅解,好了,言归正传,下面进入今天的主题: 如何使用scala+spark读写Hbase 软件版本如下: scala2.11.8 spark2.1.0 hbase1.2.0 公司有一些实时数据处理的项目,存储用的是hbase,提供实时的检索,当然hbase里面存储的数据模型都是简单的,复杂的多维检索的结果是在es里面存储的,公司也正在引入Kylin作为OLAP的数据分析引擎,这块后续有空在研究下。 接着上面说的,hbase存储着一些实时的数据,前两周新需求
我是攻城师
2018-05-14
1.5K0
Spark如何读取Hbase特定查询的数据
最近工作需要使用到Spark操作Hbase,上篇文章已经写了如何使用Spark读写Hbase全量表的数据做处理,但这次有所不同,这次的需求是Scan特定的Hbase的数据然后转换成RDD做后续处理,简单的使用Google查询了一下,发现实现方式还是比较简单的,用的还是Hbase的TableInputFormat相关的API。 基础软件版本如下: 直接上代码如下: 上面的少量代码,已经完整实现了使用spark查询hbase特定的数据,然后统计出数量最后输出,当然上面只是一个简单的例子,重要的是能把hbase数
我是攻城师
2018-05-14
2.7K0
Spark如何在一个SparkContext中提交多个任务
在使用spark处理数据的时候,大多数都是提交一个job执行,然后job内部会根据具体的任务,生成task任务,运行在多个进程中,比如读取的HDFS文件的数据,spark会加载所有的数据,然后根据block个数生成task数目,多个task运行中不同的进程中,是并行的,如果在同一个进程中一个JVM里面有多个task,那么多个task也可以并行,这是常见的使用方式。 考虑下面一种场景,在HDFS上某个目录下面有10个文件,我想要同时并行的去统计每个文件的数量,应该怎么做? 其实spark是支持在一个spark
我是攻城师
2018-05-14
3.1K0
如何使用Spark的local模式远程读取Hadoop集群数据
我们在windows开发机上使用spark的local模式读取远程hadoop集群中的hdfs上的数据,这样的目的是方便快速调试,而不用每写一行代码或者一个方法,一个类文件都需要打包成jar上传到linux上,再扔到正式的集群上进行测试,像功能性验证直接使用local模式来快速调测是非常方便的,当然功能测试之后,我们还需要打包成jar仍到集群上进行其他的验证比如jar包的依赖问题,这个在local模式是没法测的,还有集群运行的调优参数,这些都可以在正式仍到集群时验证。 一个样例代码如下: 如何在spark中
我是攻城师
2018-05-14
2.8K0
spark on yarn 如何集成elasticsearch
📷 随着spark越来越流行,我们的很多组件都有可能和spark集成,比如说spark处理完的数据写入mysql,redis,或者hbase,elasticsearch,spark本身不包含db的依赖的,这就需要自己解决依赖的jar包,这里大致有两种处理思路处理依赖问题: (1)使用maven将整个依赖打成一个fat的jar,这样所有的依赖都会在一个jar包,这样的好处就是一个jar包包含所有依赖,不需要额外考虑依赖的问题,但是弊端也非常明显如果依赖多的话jar包的体积会非常大超过100M都很正常
我是攻城师
2018-05-14
1.2K0
ES-Hadoop插件介绍
上篇文章了,写了使用spark集成es框架,并向es写入数据,虽然能够成功,但从集成度上来讲肯定没有官网提供的ES-Hadoop框架来的优雅,今天我们就来认识一下ES-Hadoop这个框架。 我们都知道Hadoop是标准的大数据生态代表,里面有非常多的组件来处理不同类型或者场景下的数据,Hadoop的基础组件是YARN,HDFS,MapReduce,我们都知道HDFS是可靠的分布式存储系统,大多数我们都是用MapReduce来分析数据,唯一的不足之处在于速度,为了解决这种问题所以才有了Hbase,Spark
我是攻城师
2018-05-14
1.7K0
Spark Streaming如何使用checkpoint容错
在互联网场景下,经常会有各种实时的数据处理,这种处理方式也就是流式计算,延迟通常也在毫秒级或者秒级,比较有代表性的几个开源框架,分别是Storm,Spark Streaming和Filnk。 曾经在一个项目里面用过阿里改造后的JStrom,整体感受就是编程略复杂,在不使用Trident Api的时候是不能保证准确一次的数据处理的,但是能保证不丢数据,但是不保证数据重复,我们在使用期间也出现过几次问题,bolt或者worker重启时候会导致大量数据重复计算,这个问没法解决,如果想解决就得使用Trident来保
我是攻城师
2018-05-14
2.7K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档