spark

IDEA开发java版本spark程序

こ雲淡風輕ζ 提交于 2020-01-19 18:51:40
如何去创建项目这里就不对讲了,可以参考 : https://www.cnblogs.com/braveym/p/12214367.html 先在pom.xml文件里面添加spark依赖包 <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.3.0</version> </dependency> 新建一个java类 编写代码 package com.dtiantai; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.api.java.function.FlatMapFunction; import org.apache.spark.api.java.function.Function2; import org.apache.spark.api.java.function.PairFunction

Apache Spark之DStream算子(章节五)

和自甴很熟 提交于 2020-01-19 16:51:12
DStreams 转换算子 与RDD类似,转换允许修改来自输入DStream的数据。 DStreams支持普通Spark RDD上可用的许多转换。一些常见的如下。 Transformation Meaning map ( func ) Return a new DStream by passing each element of the source DStream through a function func . flatMap ( func ) Similar to map, but each input item can be mapped to 0 or more output items. filter ( func ) Return a new DStream by selecting only the records of the source DStream on which func returns true. repartition ( numPartitions ) Changes the level of parallelism in this DStream by creating more or fewer partitions. union ( otherStream ) Return a new DStream that contains the

Apache Spark Streaming (章节四)

江枫思渺然 提交于 2020-01-19 16:31:18
Spark Streaming Spark Streaming是核心Spark API的扩展,可实现实时数据流的可扩展,高吞吐量,容错流处理。数据可以从许多来源(如Kafka,Flume,Kinesis或TCP套接字)中获取,并且可以使用以高级函数(如map,reduce,join和window)表示的复杂算法进行处理。最后,处理后的数据可以推送到文件系统,数据库和实时dashboards。 在内部,它的工作原理如下。 Spark Streaming接收实时输入数据流并将数据分成批处理,然后由Spark引擎处理以批量生成最终结果流。 Spark Streaming提供称为离散流或DStream的高级抽象,表示连续的数据流。DStream可以从来自Kafka,Flume和Kinesis等源的输入数据流创建,也可以通过在其他DStream上应用高级操作来创建。在内部DStream表示为一系列RDD。 Quick Start maven < dependency > < groupId > org.apache.spark </ groupId > < artifactId > spark-streaming_2.11 </ artifactId > < version > ${spark.version} </ version > </ dependency > 案例入门 val

小记--bug解决:Idea本地运行Spark作业,缺失winutils.exe hadoop.dll文件

会有一股神秘感。 提交于 2020-01-19 15:38:03
1. 问题发生场景: window 环境,使用idea 开发Spark作业,并 运行job作业,报错 {"time":"2020-01-19 11:24:41","logtype":"WARN","loginfo":"Unable to load native-hadoop library for your platform... using builtin-java classes where applicable"} {"time":"2020-01-19 11:24:41","logtype":"ERROR","loginfo":"Failed to locate the winutils binary in the hadoop binary path"} java.io.IOException: Could not locate executable D:\hadoop\hadoop-2.6.0-cdh5.15.1\bin\winutils.exe in the Hadoop binaries. at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:407) at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:422) at org

spark数据倾斜

 ̄綄美尐妖づ 提交于 2020-01-19 15:28:37
大数据(spark)八个点解决数据倾斜 一:什么是数据倾斜? 于spark/hadoop 这样的分布式大数据系统来讲,数据量大并不可怕,可怕的是数据倾斜。 对于分布式系统而言,理想情况下,随着系统规模(节点数量)的增加,应用整体耗时线性下降。如果一台机器处理一批大量数据需要120分钟,当机器数量增加到3台时,理想的耗时为120 / 3 = 40分钟。但是,想做到分布式情况下每台机器执行时间是单机时的1 / N,就必须保证每台机器的任务量相等。不幸的是,很多时候,任务的分配是不均匀的,甚至不均匀到大部分任务被分配到个别机器上,其它大部分机器所分配的任务量只占总得的小部分。比如一台机器负责处理 80% 的任务,另外两台机器各处理 10% 的任务。 『不患多而患不均』,这是分布式环境下最大的问题。意味着计算能力不是线性扩展的,而是存在短板效应: 一个 Stage 所耗费的时间,是由最慢的那个 Task 决定。 由于同一个 Stage 内的所有 task 执行相同的计算,在排除不同计算节点计算能力差异的前提下,不同 task 之间耗时的差异主要由该 task 所处理的数据量决定。所以,要想发挥分布式系统并行计算的优势,就必须解决数据倾斜问题。 二、数据倾斜的现象 当发现如下现象时,十有八九是发生数据倾斜了: 绝大多数 task 执行得都非常快,但个别 task 执行极慢

Spark内存调优

江枫思渺然 提交于 2020-01-19 14:26:15
由于Spark是基于内存计算的,所以集群中资源(比如CPU、带宽、内存)都会成为瓶颈。当集群内存够用时,网络带宽往往成为瓶颈。所有优化主要从两个方面进行:一个是数据序列化(提升网络性能,减少内存使用等),一个是内存优化 数据序列化 序列化在分布式应用程序中占用重要地位。Spark提供两种序列化库: Java serialization 拿来就用,但是太慢了。 Kryo serialization 比Java serialization更快,压缩效果更好。缺点是不支持所有Serializable 类型,需要另外把使用的序列化类进行注册。 启用Kryo 时,需在SparkConf 中设置参数 conf . set ( "spark.serializer" , "org.apache.spark.serializer.KryoSerializer" ) 设置的序列化器不仅仅应用于worker之间的数据shuffle,也用于序列化RDDs到磁盘。 官方推荐在网络敏感的应用中使用Kryo 从Spark2.0.0开始,Kryo序列化器在shuffle中已经对基础数据类型、基础数据类型的数组类型、字符串做了支持。只不过你自己定义的Kryo类需要使用registerKryoClasses 来注册: val conf = new SparkConf ( ) . setMaster ( . . . )

Spark读取Es写入Hdfs

半城伤御伤魂 提交于 2020-01-19 11:38:40
https://blog.csdn.net/qq_39481696/article/details/82597912 hbase 入门 https://blog.csdn.net/guolindonggld/article/details/82767620 package org.bathkafka.com; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.io.ImmutableBytesWritable; import org.apache.hadoop.hbase.mapreduce.TableInputFormat; import org.apache.hadoop.hbase.protobuf.ProtobufUtil; import org.apache.hadoop.hbase.protobuf.generated.ClientProtos; import org.apache

Spark 初入门

◇◆丶佛笑我妖孽 提交于 2020-01-19 00:31:30
1 简介 Spark是三大分布式计算系统开源项目之一(Hadoop,Spark,Storm)。 特点 运行速度快: Spark使用先进的DAG(Directed Acyclic Graph,有向无环图)执行引擎,以支持循环数据流与内存计算,基于内存的执行速度可比Hadoop MapReduce快上百倍,基于磁盘的执行速度也能快十倍; 容易使用: Spark支持使用Scala、Java、Python和R语言进行编程,简洁的API设计有助于用户轻松构建并行程序,并且可以通过Spark Shell进行交互式编程; 通用性: Spark提供了完整而强大的技术栈,包括SQL查询、流式计算、机器学习和图算法组件,这些组件可以无缝整合在同一个应用中,足以应对复杂的计算; 运行模式多样: Spark可运行于独立的集群模式中,或者运行于Hadoop中,也可运行于Amazon EC2等云环境中,并且可以访问HDFS、Cassandra、HBase、Hive等多种数据源。 与Hadoop相比,Spark最大的特点就是将计算数据、中间结果都存储在内存中,大大减少了IO开销,因而,Spark更适合于迭代运算比较多的数据挖掘与机器学习运算。 2.安装 Spark可以独立安装使用,也可以和Hadoop一起安装使用。和Hadoop一起安装使用,可以让Spark使用HDFS存取数据。 当安装好Spark以后

Spark RDD持久化

北城以北 提交于 2020-01-19 00:14:08
当持久化一个RDD的时候,每一个节点都将参与计算的所有分区数据存储到内存中,并且这些数据可以被这个集合(以及这个集合衍生的其他集合)的动作(action)重复利用。这个能力使后续的动作速度更快(通常快10倍以上)。对应迭代算法和快速的交互使用来说,缓存是一个关键的工具。 持久化一个rdd方法 persist() cache() 每一个被持久化的RDD,可以利用不同的存储级别存储。 Storage Level Meaning MEMORY_ONLY 将RDD作为非序列化的Java对象存储在jvm中。如果RDD不适合存在内存中,一些分区将不会被缓存,从而在每次需要这些分区时都需重新计算它们。这是系统默认的存储级别。 MEMORY_AND_DISK 将RDD作为非序列化的Java对象存储在jvm中。如果RDD不适合存在内存中,将这些不适合存在内存中的分区存储在磁盘中,每次需要时读出它们。 MEMORY_ONLY_SER 将RDD作为序列化的Java对象存储(每个分区一个byte数组)。这种方式比非序列化方式更节省空间,特别是用到快速的序列化工具时,但是会更耗费cpu资源—密集的读操作。 MEMORY_AND_DISK_SER 和MEMORY_ONLY_SER类似,但不是在每次需要时重复计算这些不适合存储到内存中的分区,而是将这些分区存储到磁盘中。 DISK_ONLY

大数据技术Spark之Spark Core(三)

混江龙づ霸主 提交于 2020-01-18 23:38:40
大数据技术Spark之Spark Core(三) 一:action reduce(func) :作用: 通过 func 函数聚集 RDD 中的所有元素,先聚合分区内数据,再聚合分区间数据。 collect():作用: 在驱动程序中,以数组的形式返回数据集的所有元素。 count():作用: 返回 RDD 中元素的个数 first():作用:返回RDD中的第一个元素 take(n):作用:返回一个由RDD的n个元素组成的数组 takeOrdered(n):作用:返回改RDD排序后的前n个元素组成的数组 aggregate:作用: aggregate 函数将每个分区里面的元素通过 seqOp 和初始值进行聚合,然后用 combine 函数将每个分区的结果和初始值(zeroValue)进行 combine 操作。这个函数最终返回 的类型不需要和 RDD 中元素类型一致。 fold(num)(func): 作用: 折叠操作, aggregate 的简化操作, seqop 和 combop 一样 saveAsTextFile(path):作用: 将数据集的元素以 textfile 的形式保存到 HDFS 文件系统或者其他支持的文件系统,对于每个元素, Spark 将会调用 toString 方法,将它装换为文件中的文本。 saveAsSequenceFile(path):作用: