Spark
ysjh0014
QQ:3463446481
展开
-
在Spark Shell中编写WordCount程序
Spark Shell是一个交互式的命令行,里面可以写Spark程序(Scala语言),也是一个客户端,用于提交Spark程序1.启动Spark Shellbin/spark-shell 上边是没有指定Master地址的启动方式,启动后用的是spark的local模式运行的,是模拟了spark集群运行的过程bin/spark-shell --master spark://c...原创 2018-10-11 12:32:19 · 3190 阅读 · 0 评论 -
SparkSQL入门案例之二(SparkSQL1.x)
SparkSQL入门案例一中的思路主要是:1).创建SparkContext2).创建SQLContext3).创建RDD4).创建一个类,并定义类的成员变量5).整理数据并关联class6).将RDD转换成DataFrame(导入隐式转换)7).将DataFrame注册成临时表8).书写SQL(Transformation)9).执行Action还有另外一种思路和写法:...原创 2018-10-17 20:01:52 · 139 阅读 · 0 评论 -
实时计算Spark Streaming初识
Spark Streaming是核心Spark API的扩展,可实现实时数据流的可扩展,高吞吐量,容错流处理。数据可以从许多来源(如Kafka,Flume,Kinesis或TCP套接字)中获取,并且可以使用以高级函数表示的复杂算法进行处理map,例如reduce,join和window。最后,处理后的数据可以推送到文件系统,数据库和实时仪表板。实际上,也可以在数据流上应用Spark的机器学习和图形...原创 2018-10-28 09:20:30 · 414 阅读 · 0 评论 -
SparkSQL的CSV数据源和Parquet数据源
1.CSV数据源package cn.ysjh0014.SparkSqlimport org.apache.spark.sql.{DataFrame, Dataset, Row, SparkSession}object SparkSqlCsv { def main(args: Array[String]): Unit = { val session: SparkSes...原创 2018-10-25 14:15:16 · 497 阅读 · 1 评论 -
SparkSQL中自定义聚合(UDAF)函数
在学习Hive的时候我们已经了解到当内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF:user defined function)用户自定义函数类别分为以下三种:1).UDF:输入一行,返回一个结果(一对一),在上篇案例 使用SparkSQL实现根据ip地址计算归属地二 中实现的自定义函数就是UDF,输入一个十进制的ip地址,返回一个省份2).UDTF:输入...原创 2018-10-23 20:29:05 · 3047 阅读 · 0 评论 -
Spark2.0新特性
1.更简单支持标准的SQL和简化的APISpark 2.0依然拥有标准的SQL支持和统一的DataFrame/Dataset API,但我们扩展了Spark的SQL 性能,引进了一个新的ANSI SQL解析器并支持子查询,Spark 2.0可以运行所有的99个TPC-DS的查询,这需要很多的SQL:2003个功能在编程API方面,我们已经简化了API统一Scala/Java下的Da...原创 2018-10-23 21:54:55 · 797 阅读 · 0 评论 -
Spark Streaming中的基本抽象DStream
DStream是Spark Streaming提供的基本抽象,它表示连续的数据流,可以是从源接收的输入数据流,也可以是通过转换输入流生成的已处理数据流。在内部,DStream由一系列连续的RDD表示,这是Spark对不可变分布式数据集的抽象,DStream中的每个RDD都包含来自特定时间间隔的数据,对DStream进行操作就是对RDD进行操作,如下图所示举个例子来说明一下,就拿前面一直在用...原创 2018-10-31 11:05:23 · 918 阅读 · 0 评论 -
Spark Streaming中的Receiver方式和直连方式
Spark Streaming从Kafka中接受数据的时候有两种方式,一种是使用Receiver的老方法,另一种是使用直连的方法1.Receiver方式Receiver是使用Kafka高级消费者API实现的,与所有接收器一样,从Kafka通过Receiver接收的数据存储在Spark执行器中,然后由Spark Streaming启动的作业处理数据但是,在默认配置下,此方法可能会在失败时...原创 2018-10-31 11:45:01 · 2202 阅读 · 1 评论 -
SparkSQL的JDBC数据源
通过JDBC连接到关系型数据库,然后可以读取表的信息以及表中的数据,既可以将结果查询展示出来,也可以将查询到的结果重新写入到数据库中直接上代码:package cn.ysjh0014.SparkSqlimport java.util.Propertiesimport org.apache.spark.sql._object SparkSqlJdbc { def main...原创 2018-10-24 10:59:53 · 296 阅读 · 0 评论 -
第一个Spark Streaming案例程序
前面的文章大概的介绍了Spark Streaing流式处理框架,说的通俗点,实际上就是在Spark Core的基础上进行了封装,然后将小批次的数据进行处理,处理完了进程并不会停止,而是会一直存在,这样只要有数据进来,就会进行处理,从而实现了流式处理下面就来一个实例进行感受:这里选择使用Linux下的nc工具来产生socket数据,然后Spark Streaming从这个socket ser...原创 2018-10-29 18:32:12 · 231 阅读 · 0 评论 -
Spark Streaming整合Kafka
前面的文章 第一个Spark Streaming案例程序 中使用socket server来写入数据,可以很明显的看出使用每次打印出的结果都只是当前输入的,并不能累加之前发的数据一起计算,多个程序一起读取数据的话,也会出现重复读取数据的情况,而且如果机器出现故障,也不能知道数据读取到哪了,所以实际中使用肯定不会使用socket,这时候就要使用之前已经学习过的Kafka了,Kafka有很明显的优势,...原创 2018-10-29 20:27:14 · 212 阅读 · 0 评论 -
SparkSQL写入多种文件格式
需求:将数据库中的数据读取出来并以text json csv parquet四种格式写入到本地文件或者hdfs中csv格式:能够以excel的形式打开 代码实现:package cn.ysjh0014.SparkSqlimport java.util.Propertiesimport org.apache.spark.sql._object SparkSqlJd...原创 2018-10-24 21:11:27 · 2049 阅读 · 0 评论 -
SparkSQL程序报错:(null) entry in command string: null chmod 0644
之前在写将mysql数据库中的数据取出然后以Json格式写入文件中的时候报 (null) entry in command string: null chmod 0644 错误,找了好久终于在网上找到解决办法我的程序是在windows下边跑的,没有在集群上解决方法:在 https://github.com/SweetInk/hadoop-common-2.7.1-bin 中下载hado...原创 2018-10-24 21:17:02 · 3896 阅读 · 0 评论 -
SparkSQL的Json数据源
SparkSql可以读取Json类型的文件代码示例:package cn.ysjh0014.SparkSqlimport org.apache.spark.sql.{DataFrame, Dataset, Row, SparkSession}object SparkSqlJson { def main(args: Array[String]): Unit = { ...原创 2018-10-24 22:03:44 · 184 阅读 · 0 评论 -
可以持续累加Kafka中数据的Spark Streaming
在前面的案例中已经将Spark Streaming整合了,但是你会发现,那个程序只能实时计算当前输入的一条数据,并不能做到累加,所以下面的代码就是解决这个问题的,我们依然以词频统计为例1.首先放出代码:package cn.ysjhimport org.apache.spark.{HashPartitioner, SparkConf}import org.apache.spark....原创 2018-10-30 18:19:24 · 165 阅读 · 0 评论 -
Spark Streaming实战之黑名单过滤
1.需求场景访问日志:201801,zs201802,ls201803,ww.....黑名单:zs,ls...现在需要把黑名单中的人从访问日志中给过滤掉,然后得到一份新的访问日志2.思路分析要实现上边的需求,首先要进行思路分析,即如何实现我们可以把黑名单数据先变成一个RDD,将它变成(zs,true) (ls,true)这样的形式,然后再将访问日志变成(z...原创 2018-11-02 17:27:27 · 1586 阅读 · 0 评论 -
SparkSQL入门案例之一(SparkSQL1.x)
SparkSQL 1.x和2.x的编程API有一些变化,企业中都有使用,所以这里两种方式都将使用案例进行学习先使用SparkSQL1.x的案例开发环境跟之前开发SparkCore程序的一样,IDEA+Maven+Scala1.导入SparkSQL的pom依赖在之前的博文 Spark案例之根据ip地址计算归属地中的pom依赖中加上下面的依赖即可<dependency&g...原创 2018-10-17 19:10:33 · 258 阅读 · 0 评论 -
使用SparkSQL实现根据ip地址计算归属地二
在使用SparkSQL实现根据ip地址计算归属地一 中虽然实现了最终目的,但是当数据量大的时候Join的代价是很大的,因为其他机器上都没有这个ip地址规则,所以要想进行比较只能从其他机器上拉过来再进行比较,那么如何进行优化呢,我们通过之前的使用SparkCore中的RDD的操作方式很容易就会想到将ip地址规则给缓存起来,即在每台机器上都有IP地址规则,这样就不用从其他机器上拉取了,也就减少了大量的...原创 2018-10-22 18:08:40 · 600 阅读 · 0 评论 -
执行第一个Spark程序
我们这里使用官方的Spark自带的一个程序来体验一下Spark的运行Spark自带的例子是利用蒙特·卡罗算法求PI在Spark目录下执行下面命令bin/spark-submit \>--master spark://cdh0:7077 \>--class org.apache.spark.examples.SparkPi \examples/jars/spark-e...原创 2018-10-10 20:22:01 · 750 阅读 · 0 评论 -
在IDEA中使用Scala语言编写WordCount程序
1.使用IDEA创建Maven项目2.导入pom.xml文件<properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> ...原创 2018-10-11 20:24:40 · 2138 阅读 · 0 评论 -
Spark案例之根据ip地址计算归属地一
1.需求根据访问日志中的ip地址计算出访问者的归属地,并且按照省份,计算出访问次数,最后将计算好的结果写入到Mysql中2.思路分析 1)整理访问日志中的数据,切分出ip字段,然后将ip字段转换成十进制 2)加载ip地址的规则,取出有用的字段,然后将数据缓存到内存中(Executor中的内存) 3)将访问日志中的ip与ip地址的规则进行匹配(使用二分查找进行匹配) ...原创 2018-10-13 08:12:44 · 931 阅读 · 0 评论 -
Spark案例之根据ip地址计算归属地二
之前的是单机版的根据ip地址计算归属地,当数据量小的时候还可以,但是在大数据实际生产中是不行的,必须将它改造成一个Spark程序,然后在Spark集群上运行Spark程序和单机版的程序不一样,下面来仔细分析一下Spark程序的运行流程首先是一个Spark集群,集群中有Master和Worker,启动Master和Worker之后,Worker会和Master建立连接并向Master发送...原创 2018-10-13 15:51:04 · 446 阅读 · 0 评论 -
Spark案例之根据ip地址计算归属地三
案例二中已经详细的通过图和介绍详细的说明了在Spark集群中根据ip地址计算归属地并将结果保存到mysql数据库中的运行流程,下面就来做具体的实现现在的环境就如案例二中说的一样,ip地址规则是保存在Driver端的机器磁盘中,而日志文件是保存在hdfs中,所以现在需要首先在Driver端拿到ip地址规则,然后通过广播变量使Executor端能够拿到ip地址规则,然后取出hdfs中的日志文件,将...原创 2018-10-14 19:07:56 · 324 阅读 · 0 评论 -
Spark案例之根据ip地址计算归属地四
之前案例三中的ip地址规则是在Driver端的机器磁盘中存储着的,但是现在如果实在hdfs中存储着的又该如何实现呢首先要分析清楚才能实现,存储在hdfs中并不像想象中的那么容易,首先代码实在Driver端写的,在Driver端写从hdfs中取出ip地址规则的代码会触发action,然后生成Task,分发到Executor端执行,因为日志文件比较大,所以存储在hdfs中的时候是会分区存储的,这样...原创 2018-10-14 19:23:48 · 410 阅读 · 0 评论 -
SparkSql入门案例之三(Spark1.x)
案例一和案例二中是将RDD转换成DataFrame的方法不同,但是在转换后都是使用SQL的方式来编程的,这里就用DataFrame API(DSL 特定领域编程语言)的方式来实现直接上代码:package cn.ysjh0014.SparkSqlimport org.apache.spark.rdd.RDDimport org.apache.spark.sql.types._...原创 2018-10-18 11:26:03 · 317 阅读 · 0 评论 -
SparkSQL入门案例之四(SparkSQL2.x)
前几个案例讲的都是都是SparkSQL1.x的编程,所以这里就讲SparkSQL2.x的编程直接上代码,这里的代码是在前边案例的基础上的:package cn.ysjh0014.SparkSqlimport org.apache.spark.SparkConfimport org.apache.spark.rdd.RDDimport org.apache.spark.sql.ty...原创 2018-10-18 11:55:10 · 373 阅读 · 0 评论 -
使用SparkSQL2.x的SQL方式实现WordCount
代码里面有很详细的说明代码实现:package cn.ysjh0014.SparkSqlimport org.apache.spark.sql.{DataFrame, Dataset, SparkSession}object SparkSQLWordCount { def main(args: Array[String]): Unit = { //创建SparkS...原创 2018-10-18 12:19:55 · 667 阅读 · 0 评论 -
Spark概述
1.什么是SparkSpark官方网站: http://spark.apache.org/Spark是一种快速、通用、可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache顶级项目。目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL、Spa...原创 2018-10-08 19:39:39 · 105 阅读 · 0 评论 -
Spark的特点
1.快没有接触Spark之前就听说Spark快,比Hadoop快很多很多与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上,Spark实现了高效的DAG执行引擎,可以通过基于内存来高效处理数据流2.易用Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用,而...原创 2018-10-08 19:46:00 · 563 阅读 · 0 评论 -
Spark集群安装搭建
1.下载SparkSpark是一个独立的内存计算框架,如果不考虑存储的话,可以完全独立运行,因此这里就只安装Spark集群Spark下载地址: http://spark.apache.org/downloads.html选择好Spark和Hadoop的版本之后就可以下载了,从2.0版本开始,Spark默认使用Scala2.112.上传解压将Spark的压缩包上传...原创 2018-10-08 20:44:16 · 354 阅读 · 0 评论 -
SparkSQL2.x中的join操作
前面讲了各种各样的案例,总的来说就是SparkSQL1.x和SparkSQL2.x的不同编程方式,以及创建DataFrame的不同方式和使用Sql,DataFrame API编程的方式但是上边的案例中都是一张表,没有进行多表的联合,即使用join,下面就来使用代码详细的理解join如何进行操作先上代码:package cn.ysjh0014.SparkSqlimport org....原创 2018-10-19 17:24:46 · 699 阅读 · 0 评论 -
使用SparkSQL实现根据ip地址计算归属地一
之前使用过RDD实现过这个案例,如果不知道可以去参考我写的博文,这里要实现的就是在之前那个基础上进行修改的,具体实现思路就是将ip地址规则和访问日志文件中的数据进行整理然后转换成DataFrame之后注册成表,然后写Sql语句进行Join操作具体代码实现:package cn.ysjh0014.SparkSqlimport cn.ysjh0014.TestIpimport org...原创 2018-10-19 18:06:53 · 704 阅读 · 0 评论 -
Spark SQL概述
1.什么是Spark SQLSpark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用,将SQL解析成特殊的RDD(DataFrame),然后在Spark集群上运行2.为什么要学习Spark SQL我们已经学习了Hive,它是将Hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写Map...原创 2018-10-17 11:10:53 · 354 阅读 · 0 评论 -
Spark高可用集群安装
在之前的文章Spark集群安装中,已经详细的介绍了Spark分布式集群的安装方法Spark集群启动后执行jps命令,主节点上有Master进程,其他子节点上有Work进行,但是有一个很大的问题,那就是Master节点存在单点故障,要解决此问题,就要借助zookeeper,并且启动至少两个Master节点来实现高可靠具体实现步骤如下:1.Spark集群规划这里有三台主机: cd...原创 2018-10-10 19:07:15 · 385 阅读 · 0 评论 -
Spark Streaming整合Spark SQL之wordcount案例
完整源代码地址: https://github.com/apache/spark/blob/v2.3.2/examples/src/main/scala/org/apache/spark/examples/streaming/SqlNetworkWordCount.scala案例源码:package cn.ysjhimport org.apache.spark.SparkConf...原创 2018-11-02 19:00:21 · 350 阅读 · 0 评论