spark
文章平均质量分 83
enjoy编程
Stay hungry, stay foolish.(求知若饥,虚心若愚。)10+IT行业老兵,熟悉大数据处理,分布式编程, 喜欢使用java、python解决工作、生活中的问题
展开
-
Spark程序中如何启用lzo压缩?
LZO是一个无损的数据压缩库,相比于压缩比它更加追求速度,官网地址是:http://www.oberhumer.com/opensource/lzo,相比gzip,bzip,lzo的压缩率不高,但是压缩、解压速度都比较高。启用lzo的压缩方式对于小规模集群是很有用处,压缩比率大概能降到原始日志大小的1/3。同时压缩和解压缩的速度也比较快。本文讲解如何在hadoop集群中配置lzo,并在spark中启动lzo原创 2022-04-20 18:43:17 · 2538 阅读 · 0 评论 -
在idea运行spark程序报错:The root scratch dir: /tmp/hive on HDFS should be writable
win10个人电脑,在idea中运行spark程序【连接了hive】,报如下异常:java.lang.RuntimeException: java.lang.RuntimeException: The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: r--r--r--; 本文针对此问题进行了分析并提供了解决方案。原创 2022-03-03 19:15:00 · 2579 阅读 · 0 评论 -
spark支持的machine learning 算法汇总及pipelines简介
本文针对spark支持的machine learning 算法进行汇总,并针对各类算法、ml pipeline的使用提供一个简单的入门介绍。machine learning 算法汇总spark支持的machine learning 算法汇总如下机器学习的流程机器学习流程拿到一个机器学习问题时,通常处理的机器学习的流程一般如下:ML PipelinesML Pipelines: 提供了基于DataFrame上统一的高等级API,可以帮助使用者创建和调试机器学习工作流MLlib标准化了用于机原创 2021-11-03 19:26:42 · 618 阅读 · 0 评论 -
Spark Machine Learning的数据类型及使用示例代码
Spark ML的数据类型Local vector本地向量具有整数类型和基于0的索引和double类型的值,存储在一台机器上。MLlib支持两种类型的本地向量稠密本地向量 dense local vector稀疏本地向量 sparse local vector import org.apache.spark.mllib.linalg.{Vector, Vectors} ## 创建稠密向量 val dv: Vector = Vectors.dense(1.0, 0.0, 3原创 2021-11-03 19:24:18 · 469 阅读 · 0 评论 -
Spark性能优化--如何解决数据倾斜
https://www.cnblogs.com/xiaodf/p/6055803.htmlhttps://blog.51cto.com/u_14048416/2338651https://www.cnblogs.com/tongxupeng/p/10259553.htmlhttps://blog.csdn.net/feng12345zi/article/details/79816936?utm_term=spark%E6%95%B0%E6%8D%AE%E5%80%BE%E6%96%9C%E8%A7%A原创 2021-07-22 19:07:26 · 600 阅读 · 1 评论 -
大数据文件格式对比:Parquet 与ORC 对比
目前两者都作为Apache的顶级项目来进行维护,但是无论是设计的思路还是合理性都是ORCFile更为优秀.但是或许是因为背后所主导的力量不同,毕竟是出身名门,在各个存储系统的支持上,和实际的运用之中,Parquet还是占了很大的优势Apache ORCORC(OptimizedRC File)存储源自于RC(RecordColumnar File)这种存储格式,RC是一种列式存储引擎,对schema演化(修改schema需要重新生成数据)支持较差,而ORC是对RC改进,但它仍对schema演化支持较差原创 2021-07-16 18:06:20 · 1133 阅读 · 2 评论 -
Spark性能优化原则及参数优化
1 spark优化Spark性能优化的第一步就是要在开发Spark作业的过程中注意和应用一些性能优化的基本原则。开发调优,需要了解以下一些Spark基本开发原则,包括:RDD lineage设计、算子的合理使用、特殊操作的优化等。在开发过程中,时时刻刻都应该注意以下原则,并将这些原则根据具体的业务以及实际的应用场景,灵活地运用到自己的Spark作业中。1.1 资源参数调优num-executors:设置Spark作业总共要用多少个Executor进程来执行, 默认为1,官方建议2-5个。 每个Spa原创 2021-07-16 17:09:13 · 1262 阅读 · 4 评论 -
spark graphx的Connected Components算法使用示例
Graphx作为Spark的图计算组件,提供了丰富的图操作接口,以及常用的算法(在graphx lib中)。本文介绍Connected Components算法,并提供使用示例;1. 相关知识如下图有3个极大连通子图(连通分量)2. 计算图的连通子图Computetheconnectedcomponentmembershipofeachvertexandreturnagraphwiththevertexvaluecontainingthelowe...原创 2021-04-30 16:57:00 · 576 阅读 · 1 评论 -
spark graphx的Triangle三角形计数算法使用示例
Graphx作为Spark的图计算组件,提供了丰富的图操作接口,以及常用的算法(在graphx lib中)。本文介绍三角形计数TriangleCount算法原理;1. 相关知识三角形:一种完全图(即任意2点之间有边),图中三角形的数量可以反应网络的稠密度和质量三角形计算:一条边的2个顶点如果有共同的邻居,那么共同的邻居和这两个顶点就构成了三角形结构;或者说当一个顶点有两个相邻的顶点且它们之间有一条边时,它就是三角形的一部分。如下图,javame 认识 zhoney, 他们两个人有共同创建了.原创 2021-04-29 18:02:23 · 965 阅读 · 0 评论 -
Spark SQL, DataFrames and Datasets简介
1. 概念介绍1.1. Spark SQLSpark SQL是用于结构化数据处理的Spark模块。与基本的Spark RDD API不同,Spark SQL提供的接口为Spark提供了关于数据结构和正在执行的计算的更多信息。在内部,Spark SQL使用这些额外的信息来执行额外的优化。与Spark SQL交互的方式包括SQL和Dataset API。当计算结果时,使用相同的执行引擎,与您使用哪个API/语言来表示计算无关。这种统一意味着开发人员可以轻松地在不同的api之间来回切换,基于不同的ap原创 2021-04-28 17:16:58 · 288 阅读 · 0 评论 -
spark 分区和分区【Partitioning & Partition】的理解
1. 理解spark 分区【Partitioning】1.1. 分区概念及分区方法Spark分区是一种将数据分割到多个分区的方法,这样您就可以并行地在多个分区上执行转换,从而更快地完成作业。还可以将已分区的数据写入文件系统(多个子目录),以便下游系统更快地读取数据。Spark有几种分区方法来实现并行性,可以根据需要选择使用哪种分区方法。PARTITIONING METHODS (SCALA) 说明 提供类 repartition(numPartitions: Int)原创 2021-04-28 15:50:11 · 4170 阅读 · 0 评论 -
spark的spark.sql.hive.caseSensitiveInferenceMode参数含义
本文针对spark的spark.sql.hive.caseSensitiveInferenceMode的参数含义及使用进行梳理、总结1. 参数含义Spark 2.1.1引入了一个新的配置项:spark.sql.hive.caseSensitiveInferenceMode,默认值是NEVER_INFER,保持与spark 2.1.0一致的行为。但是Spark 2.2.0将此配置的默认值更改为INFER_AND_SAVE,以恢复读取底层文件schema中包含大小写混合列名的Hive元存储表的兼容性。.原创 2021-04-28 10:51:34 · 2720 阅读 · 0 评论 -
spark如何正确的删除hive外部表【删除表时同时删除hdfs上的数据】?
在spark 2.4.x和hive 3.1.x环境下,spark通过sql (drop table xxx)删除hive的外部表,只能删除hive的元数据信息,但没有删除hdfs上的数据,导致hdfs的存储空间的浪费,本文针对此情况进行测试1. 测试步骤1.1. 建表并插入数据CREATE EXTERNAL TABLE test_partition (id STRING, name STRING, age INT) PARTITIONED BY (year STRING) STORED AS O原创 2021-04-27 17:50:38 · 5654 阅读 · 0 评论 -
Spark如何正确的写hive分区表
经常听到有人讲:spark写hive 分区表时,原本想覆盖一个分区的数据,但因为错误的编码导致整个表的分区被覆盖。本文针对此问题进行测试。1. 测试结论 需要指定如下参数:"spark.sql.sources.partitionOverwriteMode", "dynamic" "hive.exec.dynamic.partition.mode", "nonstrict" saveAsTable方法会导致全表覆盖写,需要用insert into,详情下面的源代码 insert.原创 2021-04-27 15:55:51 · 10689 阅读 · 5 评论 -
spark执行优化--禁止将依赖的Jar包传到HDFS(spark.yarn.jar和spark.yarn.archive的使用)
使用yarn的方式提交spark应用时,如果没有配置spark.yarn.archive或者spark.yarn.jars时, 输出的日志在输出Neither spark.yarn.jars nor spark.yarn.archive is set后,会将SPARK_HOME/jars下的所有jar打包并上传到HDFS上,内容如下,这个过程会非常耗时。可以通过如下2种方法避免此操作,缩小spark应用的启动时间 spark-defaults.conf配置里添加spark.yarn.archive或s原创 2021-04-26 16:38:07 · 1866 阅读 · 0 评论 -
如何添加多个jar到spark-submit的classpath?
当使用Spark -submit提交Spark应用程序时,经常需要在类路径中包含多个第三方jar, Spark支持多种方式向类路径中添加依赖jar。1. 将jar添加到classpath可以使用spark-submit、spark-defaults.conf和SparkConf属性将多个第三方jar添加到类路径中,在使用这些选项之前,您需要了解这些选项如何应用的优先级。下面是它们按顺序应用的优先级。 直接在SparkConf上设置的属性优先级最高。 第二个优先级是spark-subm原创 2021-04-26 15:21:35 · 5218 阅读 · 0 评论 -
在YARN上运行Spark的常用配置参数讲解
本文针对在YARN上运行Spark的常用配置参数进行讲解1. 在yarn上启动spark application确保HADOOP_CONF_DIR或YARN_CONF_DIR指向包含Hadoop集群(客户端)配置文件的目录。这些configs用于写入HDFS并连接YARN ResourceManager。这个目录中包含的配置将被分发到YARN集群中,以便应用程序使用的所有容器使用相同的配置。如果配置引用的Java系统属性或环境变量不是由YARN管理的,它们也应该在Spark应用程序的配置(dri原创 2021-04-26 11:52:40 · 5700 阅读 · 0 评论 -
spark如何自定义log4j配置 及 yarn的应用日志存储
在实际工作中,需要针对spark任务的日志输出进行自定义。1. 相关知识1.1 spark 日志介绍以spark2.4.x为例,spark中提供了log4j的方式记录日志,目前使用的版本是log4j-1.2.17,基于properties方式配置可以在$SPARK_HOME/conf/下,将log4j.properties.template文件copy为log4j.properties来启用log4j配置。但这个配置为全局配置,不能单独配置某个job的运行日志。在Spark的co...原创 2021-04-25 18:00:22 · 2280 阅读 · 0 评论 -
Spark on yarn的client、cluster模式提交job流程及区别
本文描述Spark on yarn的job提交流程1. client模式在YARN Client模式下,Driver在任务提交的本地服务器上运行,流程如下: Driver启动时和ResourceManager通讯,申请启动ApplicationMaster ResourceManager根据资源情况,分配container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster的功能相当于一个ExecutorLaucher,只原创 2021-04-25 17:13:32 · 1553 阅读 · 0 评论 -
SparkSession如何连接Hive Metastore?
在spark编程中,因为数据存储在hdfs时,需要连接hive metastore,基于spark sql进行数据分析。1. 连接hive metastoreSparkSession连接Hive Metastore,可以通过指定配置文件hive-site.xml【此将文件放在classpath下】, 但有时在本地调试时,不想指定配置文件或没有配置文件hive-site.xml,做法如下注意: 1. 在实际生产环境中,不需要在sparkSession中配置hive.metastore....原创 2021-04-25 11:42:57 · 4171 阅读 · 0 评论 -
Spark中读取本地Windows文件
今天一个小伙伴说,使用spark不能读取本地文件,写个例子给他,[file://]代表本地, 如果是window要话,路径可以是:file:///E:/aa/bb/cc.txt, 或 file:///E:\\aa\\bb\\cc.txt [hdfs://]代表hdfs路径如果路径没有文件头,spark会将该路径默认添加上"hdfs://"import org.apache.log4j.Loggerimport org.apache.spark.sql.SparkSessionob.原创 2021-04-14 17:51:01 · 4137 阅读 · 0 评论 -
Spark DataSource V1 & V2 API 一文理解
1. Spark Connector 介绍Spark Connector 是一个 Spark 的数据连接器,可以通过该连接器进行外部数据系统的读写操作。Spark Connector 包含两部分,分别是 Reader 和 Writer。DataSource的API的代码位于spark_sql【如spark-sql_2.11-2.4.4.jar】 模块中的org.apache.spark.sql.sources包下,定义了如何从存储系统进行读写的相关 APIAPI分为v1、v2两个版本,v2的代码原创 2021-04-13 18:01:57 · 3320 阅读 · 0 评论