202110-17 Spark SQL的整体实现逻辑解析 1、sql语句的模块解析 当我们写一个查询语句时,一般包含三个部分,select部分,from数据源部分,where限制条件部分,这三部分的内容在sql中有专门的名称:当我们写sql时,如上图所示,在进行逻辑解析时会把sql分成三个部分,project,DataSource,Filter模块,当生成执行部分时又把他们称为:Result模块、DataSource模块和Opertion模块。那么在关系数据库中,当我们写完一个查询语句进行执行时,发生的过程如下图所示... 继续阅读 >
202109-09 Spark集群框架的搭建与入门 目录一、Spark概述运行结构二、环境部署1、Scala环境2、Spark基础环境3、Spark集群配置4、Spark启动5、访问Spark集群三、开发案例1、核心依赖2、案例代码开发四、源代码地址一、Spark概述运行结构Driver运行Spark的Applicaion中main()函数,会创建SparkContext,SparkContext负责和Cluster-Manager进行通信,并负责申请资源、任务分配和监控等。ClusterManager负责申请和管理在WorkerNode上运行应用所需的资源,可以高效地在一个计... 继续阅读 >
202010-09 Spark调优多线程并行处理任务实现方式 方式1:1.明确Spark中Job与Streaming中Job的区别1.1SparkCore一个RDDDAGGraph可以生成一个或多个Job(Action操作)一个Job可以认为就是会最终输出一个结果RDD的一条由RDD组织而成的计算Job在spark里应用里是一个被调度的单位1.2Streaming一个batch的数据对应一个DStreamGraph而一个DStreamGraph包含一或多个关于DStream的输出操作每一个输出对应于一个Job,一个DStreamGraph对应一个JobSet,里面包含一个或... 继续阅读 >
202009-29 Spark处理数据排序问题如何避免OOM 错误思想举个列子,当我们想要比较一个类型为RDD[(Long,(String,Int))]的RDD,让它先按Long分组,然后按int的值进行倒序排序,最容易想到的思维就是先分组,然后把Iterable转换为list,然后sortby,但是这样却有一个致命的缺点,就是Iterable在内存中是一个指针,不占内存,而list是一个容器,占用内存,如果Iterable含有元素过多,那么极易引起OOMvalcidAndSidCountGrouped:RDD[(Long,Iterable[(String,Int)])]=c... 继续阅读 >
202009-27 Python如何把Spark数据写入ElasticSearch 这里以将Apache的日志写入到ElasticSearch为例,来演示一下如何使用Python将Spark数据导入到ES中。实际工作中,由于数据与使用框架或技术的复杂性,数据的写入变得比较复杂,在这里我们简单演示一下。如果使用Scala或Java的话,Spark提供自带了支持写入ES的支持库,但Python不支持。所以首先你需要去这里下载依赖的ES官方开发的依赖包包。下载完成后,放在本地目录,以下面命令方式启动pyspark:pyspark--jarselasticsearch-hadoo... 继续阅读 >
202009-27 Jupyter notebook运行Spark+Scala教程 今天在intellij调试spark的时候感觉每次有新的一段代码,都要重新跑一遍,如果用spark-shell,感觉也不是特别方便,如果能像python那样,使用jupyternotebook进行编程就很方便了,同时也适合代码展示,网上查了一下,试了一下,碰到了很多坑,有些是旧的版本,还有些是版本不同导致错误,这里就记录下来安装的过程。1.运行环境硬件:Mac事先装好:Jupyternotebook,spark2.1.0,scala2.11.8(这个版本很重要,关系到后面的安装... 继续阅读 >