Spark
文章平均质量分 59
Spark
张俊杰zjj
一个大龄的码农.目前是Java+Python开发,业余时间研究减肥健身养生,后期可能会去做减肥健身博主.
展开
-
Spark数据倾斜的产⽣和解决办法?
什么是数据倾斜Spark 中的数据倾斜问题主要指shuffle过程中出现的数据倾斜问题,是由于不同的key对应的数据量不同导致的不同task所处理的数据量不同的问题。例如,reduce点一共要处理100万条数据,第一个和第二个task分别被分配到了1万条数据,计算5分钟内完成,第三个task分配到了98万数据,此时第三个task可能需要10个小时完成,这使得整个Spark作业需要10个小时才能运行完成,这就是数据倾斜所带来的后果。注意,要区分开数据倾斜与数据量过量这两种情况:数据倾斜是指少数tas原创 2021-02-10 09:35:16 · 227 阅读 · 0 评论 -
Spark什么是宽依赖和窄依赖
宽依赖和窄依赖什么是依赖关系当前的RDD和它的上级的RDD之间的一个描述.一个应用下面有job,job下面有阶段,阶段怎么划分的,就是通过依赖关系划分的.窄依赖窄依赖表示每一个父RDD的Partition最多被子RDD的一个Partition使用,窄依赖我们形象的比喻为独生子女。宽依赖宽依赖本质上就是shuffle.宽依赖表示同一个父RDD的Partition被多个子RDD的Partition依赖,会引起Shuffle,总结:宽依赖我们形象的比喻为超生。具有宽依赖的 transform原创 2021-02-10 08:59:48 · 1184 阅读 · 1 评论 -
spark算子简单总结
Transformation转换算子value类型:map() 映射mapPartitions() 以分区单位执行MapmapPartitionsWithIndex() 带分区号flatMap() 压平glom() 分区转换数组groupBy() 分组filter() 过滤sample() 采样distinct() 去重coalesce() 重新分区repartition() 重新分区执行shufflesortBy() 排序pipe() 执行脚本双value类型:union(原创 2021-01-24 16:02:04 · 154 阅读 · 0 评论 -
提交spark任务到yarn集群上
先Maven打包自己编写的程序.放到Linux指定目录下放到/root/module/spark_job/realtime-parent.jar编写Spark-submit 提交脚本要注意空格啥的 和路径别写错了sh脚本文件: $SPARK_HOME/bin/spark-submit \--class com.ods.BaseDBMaxwellApp \--num-executors 80 \--driver-memory 6g \--executor-memory 6g \--ex原创 2021-01-24 15:16:22 · 3510 阅读 · 0 评论 -
Spark RDD概述
什么是RDD RDD(Resilient Distributed Dataset) 叫做弹性分布式数据集,是Spark中最基本的数据抽象(在Spark操作数据都需要先放到RDD里面,然后再操作RDD)。 Spark是做数据的分析计算的,分析RDD里面的数据 在代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。 弹性表示RDD将来很容易的进行各种转换,将来数据也可以在不同的节点进行传输. 分布式表示运行的时候可以并行运算. 数据集表示可以当做集合,原创 2020-12-23 16:26:45 · 1070 阅读 · 0 评论 -
Spark概述
Spark概述(一)什么是 SparkSpark 是一个快速(基于内存), 通用, 可扩展的集群计算引擎(不负责数据的存储和传输,只是负责计算.数据一般来源于数据仓库或者Kafka,计算完的指标数据一般是其它引擎,比如说计算完了存到MySQL里面,或者HBase,ElasticSearch,Kafka里面等等.)Spark仅仅是做运算用的.并且 Spark 目前已经成为 Apache 最活跃的开源项目, 有超过 1000 个活跃的贡献者.1.历史1.2009 年,Spark 诞生于 UC Ber原创 2020-12-23 11:27:53 · 777 阅读 · 0 评论 -
Yarn上执行Spark的wordCount的demo
在本地模式wordCount程序的基础上改造 Spark Shell 仅在测试和验证我们的程序时使用的较多,在生产环境中,通常会在 IDE 中编制程序,然后打成 jar 包,然后提交到集群,最常用的是创建一个 Maven 项目,利用 Maven 来管理 jar 包的依赖。这是本地模式的WordCount程序https://blog.csdn.net/qq_41489540/article/details/109740491打包的时候一定要给代码.setMaster(“local[2]”) 这个去掉原创 2020-11-29 15:36:54 · 422 阅读 · 0 评论 -
Spark配置启动LZO压缩
前言Hadoop已经配置好了LZO, 如果Spark不配置LZO压缩的话,在提交作业执行的时候会报错Caused by: java.lang.ClassNotFoundException: Class com.hadoop.compression.lzo.LzoCodec not found.找到Hadoop配置的LZO压缩包路径“/root/soft/hadoop-2.7.2/share/hadoop/common/hadoop-lzo-0.4.21-SNAPSHOT.jar”配置Spark配置文原创 2020-11-29 15:32:01 · 672 阅读 · 0 评论 -
Spark往HBase读写数据(Scala语言)
概述这是原始版本的,不是用phoenix的准备HBase数据此时 HBase的ns1下的t1是有数据的hbase(main):005:0> scan 'ns1:t1'ROW COLUMN+CELL 1001 column=cf1:age, timestamp=1605086867452, value=27 1001 column=cf1:name, timestamp=1605原创 2020-11-23 18:31:53 · 1278 阅读 · 0 评论 -
Spark的广播变量的概念和使用
概念广播变量在每个节点上保存一个只读的变量的缓存, 而不用给每个 task 来传送一个 copy.例如, 给每个节点一个比较大的输入数据集是一个比较高效的方法. Spark 也会用该对象的广播逻辑去分发广播变量来降低通讯的成本.广播变量通过调用SparkContext.broadcast(v)来创建. 广播变量是对v的包装, 通过调用广播变量的 value方法可以访问.广播变量只会被发到各个节点一次,应作为只读值处理(修改广播变量的值不会影响到别的节点).举例子假如Driver说有个BigArr原创 2020-11-23 17:56:27 · 3062 阅读 · 0 评论 -
Spark自定义Map类型的累加器
自定义Map的累加器,统计List里面的累加值,总数,平均值package com.addimport org.apache.spark.rdd.RDDimport org.apache.spark.util.AccumulatorV2import org.apache.spark.{SparkConf, SparkContext}object MyMapAccumulator { def main(args: Array[String]): Unit = { val conf:原创 2020-11-23 17:48:08 · 1201 阅读 · 0 评论 -
Spark自定义int类型的累加器
package com.addimport org.apache.spark.rdd.RDDimport org.apache.spark.util.AccumulatorV2import org.apache.spark.{SparkConf, SparkContext}/** * 自定义Int类型的累加器 */object MyIntAccumulator { def main(args: Array[String]): Unit = { val conf: SparkC原创 2020-11-23 17:44:23 · 537 阅读 · 0 评论 -
Spark之累加器的概念和使用
存在的问题在定义共享一个变量去记录计数的时候会出现一个问题import org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.rdd.RDDobject Add1 { def main(args: Array[String]): Unit = { val conf: SparkConf = new SparkConf().setAppName("Add").setMaster("local[2]")原创 2020-11-23 17:39:33 · 776 阅读 · 0 评论 -
SparkSql 用Scala语言操作Hive创建库,表,并且insert数据
Maven依赖配置文件准备直接看这个帖子SparkSql 用Scala代码查询Hive里面的指定的表users.json[{"name":"zhangsan" ,"age":18} ,{"name":"lisi" ,"age":15}]代码有两种方式, demo01 是原始的SQLdemo02是DataFrame的方式,DataFrame更强大,而直接写SQL更灵活,学习成本低.其实两种都能满足业务开发.import org.apache.spark.sql.SparkSession原创 2020-11-22 17:31:20 · 3289 阅读 · 0 评论 -
SparkSql 用Scala代码查询Hive里面的指定的表
Maven依赖 <!--添加spark对hive的支持的jar包--> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-hive_2.11</artifactId> <version>2.1.1</version> &原创 2020-11-22 17:00:41 · 1032 阅读 · 0 评论 -
SparkSQL使用hiveserver2 + beeline查询Hive里面的数据
SparkSql使用spark-sql cli查询Hive里面的数据https://blog.csdn.net/qq_41489540/article/details/109957066使用hiveserver2 + beeline为什么hiveserver2 + beeline???spark-sql 得到的结果不够友好, 所以可以使用hiveserver2 + beeline开始操作1.启动 thrift服务器在spark的根目录执行[root@zjj101 spark-2.1.1-bi原创 2020-11-22 16:50:59 · 959 阅读 · 0 评论 -
SparkSql使用spark-sql cli查询Hive里面的数据
使用Spark-Shell方式https://blog.csdn.net/qq_41489540/article/details/109956754 使用spark-sql cli这种使用场景基本就是测试环境用用,生产环境很少用…为什么要有spark-sql cli?因为在spark-shell执行 hive 方面的查询比较麻烦需要 .spark.sql("select * from student ").show方式,很麻烦Spark 专门给我们提供了书写 HiveQL 的工具: spark原创 2020-11-22 16:39:40 · 918 阅读 · 0 评论 -
SparkSql整合Hive
前提前提是机器已经有整合好的hive.准备1.Spark 要接管 Hive 需要把Hive的conf目录下的 hive-site.xml 复制到Spark的conf/目录下.2.因为Hive的元数据信息都是存在MySQL里面,所以需要把 Mysql 的驱动 复制到 Spark的jars/目录下.我的是mysql-connector-java-5.1.49.jar .3.如果访问不到hdfs, 则需要把core-site.xml和hdfs-site.xml 拷贝到Spark的conf/目录下.直接原创 2020-11-22 16:31:16 · 360 阅读 · 0 评论 -
SparkSql 读写MySQL里面的数据(scala语言)
json数据准备[{"name":"zhangsan" ,"age":18} ,{"name":"lisi" ,"age":15}]pom. xml如果是聚合工程的话,建议这个依赖放在父工程上,如果放在子工程的话会出现问题. <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactI原创 2020-11-21 17:51:51 · 556 阅读 · 0 评论 -
SparkSql自定义函数(scala语言)
json数据[{"name":"张三" ,"age":18} ,{"name":"李四" ,"age":15}]代码编写import org.apache.spark.sql.expressions.{MutableAggregationBuffer, UserDefinedAggregateFunction}import org.apache.spark.sql.types._import org.apache.spark.sql.{Row, SparkSession}import sca原创 2020-11-21 16:10:21 · 917 阅读 · 0 评论 -
SparkSql DataSet和DataFrame互相转换 (scala语言)
json数据[{"name":"张三" ,"age":18} ,{"name":"李四" ,"age":15}]不能是多行的,一定要一行的.代码import org.apache.spark.sql.{DataFrame, SparkSession}case class People(name: String, age: Long)object DFDS { def main(args: Array[String]): Unit = { val spark: SparkS原创 2020-11-21 16:01:56 · 806 阅读 · 0 评论 -
SparkSql DataFrame转RDD (scala语言)
package comimport org.apache.spark.sql.{DataFrame, SparkSession}case class User(name: String, age: Int)object DF2RDD { def main(args: Array[String]): Unit = { val spark: SparkSession = SparkSession .builder() .master("local[*]")原创 2020-11-21 15:56:34 · 379 阅读 · 0 评论 -
SparkSql DataSet和RDD互相转换 (Scala)
DataSet转RDD调用rdd方法即可import org.apache.spark.rdd.RDDimport org.apache.spark.sql.SparkSessionobject DS2RDD { def main(args: Array[String]): Unit = { val spark: SparkSession = SparkSession .builder() .master("local[*]") .appName(原创 2020-11-21 15:41:21 · 915 阅读 · 0 评论 -
SparkSql RDD转DataFrame (scala语言)
代码demo01是对象 demo02是基本类型package comimport org.apache.spark.SparkContextimport org.apache.spark.rdd.RDDimport org.apache.spark.sql.SparkSession/** * 定义一个对象 * * @param name * @param age */case class User(name: String, age: Int)object RDD2DF {原创 2020-11-21 15:51:59 · 181 阅读 · 0 评论 -
SparkSql创建DataSet(Scala语言)
DataSet可以通过Scala的序列获取到DataSet,也可以通过RDD转换得到DataSet,也可以通过DataFrame转换得到DataSet.说明:在实际使用的时候, 很少用到把序列转换成 DataSet, 更多的是通过RDD来得到DataSet代码import org.apache.spark.sql.{Dataset, SparkSession}/** * 定义user实体类 * * @param name * @param age */case class User原创 2020-11-21 15:29:37 · 1249 阅读 · 0 评论 -
简单介绍SparkSql
什么是SparkSql一句话概括就是Sql底层是rdd编程.Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块.结构化数据说白了就是数据库SparkSql目的是用来替换RDD编程的.SparkSql底层就是RDD.,因为RDD你也知道,虽然比MapReduce写起来好一些,但是也是不如Sql直接写起来方便的在内部, Spark SQL 使用这些额外的信息去做一些额外的优化.如果程序员写RDD的话,经验丰富的人写出来的程序可能性能原创 2020-11-21 15:07:57 · 243 阅读 · 0 评论 -
SparkSql创建DataFrame(Scala语言 )
准备json数据users.json[{"name":"张三" ,"age":18} ,{"name":"李四" ,"age":15}]注意,必须得是一行,不能是换行的.Maven依赖 <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.11<原创 2020-11-21 14:49:28 · 839 阅读 · 0 评论 -
SparkShell创建表
SQL 语法风格是指我们查询数据的时候使用 SQL 语句来查询.这种风格的查询必须要有临时视图或者全局视图来辅助scala> val df = spark.read.json("/opt/module/spark-local/examples/src/main/resources/people.json")df: org.apache.spark.sql.DataFrame = [age: bigint, name: string]scala> df2.createOrReplace原创 2020-11-20 18:30:12 · 951 阅读 · 0 评论 -
SparkShell读取json文件
SparkShell读取Linux本地json文件root/soft/person.json就是本机路径var df = spark.read.format(“json”).load(“file:///root/soft/person.json”)scala> var df = spark.read.format("json").load("file:///root/soft/person.json")df: org.apache.spark.sql.DataFrame = [_cor原创 2020-11-20 18:22:25 · 1321 阅读 · 0 评论 -
Scala语言在Idea Maven项目编写wordcount
准备数据test.txt111sssdddaszjjassssdzjjaaasssdsaaa创建Maven项目创建Maven项目依赖xml <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId原创 2020-11-17 13:10:44 · 364 阅读 · 0 评论 -
spark的安装和环境变量配置 *
下载https://archive.apache.org/dist/spark/解压上传到linux再解压[root@zjj101 soft]# tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz配置环境变量编辑 /etc/profile 文件# 配置sparkexport SPARK_HOME=/root/soft/spark-2.1.1-bin-hadoop2.7export PATH=$SPARK_HOME/bin:$PATH# 配置spark结束原创 2020-10-29 17:48:31 · 2284 阅读 · 0 评论 -
spark的Local模式运行官方求pi的案例 *
安装运行案例在spark根目录运行bin/spark-submit \--class org.apache.spark.examples.SparkPi \--master local[2] \./examples/jars/spark-examples_2.11-2.1.1.jar 100然后观察控制台结果,该算法是利用蒙特·卡罗算法求PI,如果想更精确可以给最后面的参数加大,比如说给100 改成 1000 或者 10000 这样计算会更精确,但是计算时间更长.20/10/29 16:原创 2020-10-29 17:47:05 · 636 阅读 · 0 评论 -
Spark-shell执行wordcount案例
什么是spark-shellSpark-shell 是 Spark 给我们提供的交互式命令窗口(类似于 Scala 的 REPL)准备数据新建个demo文件夹在demo文件夹里面新建两个txt文件里面的数据都是用空格分隔的, 不是用tab分隔的[root@zjj101 soft]# cat demo1.txtzjj AAABBB AAAjj ZJJ[root@zjj101 soft]# cat demo2.txtZZZ zzzxxx yyyZjjzjj[root@zjj101原创 2020-10-29 17:46:34 · 1341 阅读 · 0 评论