
Spark
文章平均质量分 65
Code_LT
以斗争求团结则团结成
公司网络限制,无法进行私信沟通
展开
-
【Spark】spark中的thread.sleep
Thread.sleep(millisec) 方法会休眠当前正在执行的线程,millisec 单位为毫秒。在driver中执行不会有什么问题,在workor中执行的话,注意不要超过heartbeat时间,否则会被resource manager给kill掉。原创 2023-10-09 14:46:07 · 580 阅读 · 0 评论 -
【Spark】用udf和withColumn在dafaframe中创建新列
udf会自动把Column入参转化成对应func的入参,并将func返回的结果转化成Column类型。UserDefinedFunction接收列(Column)作为参数,并返回Column.udf接收一个函数(func)作为参数,返回一个UserDefinedFunction。func可以接收普通类型参数,并返回普通类型结果。注意由于udf限制。func最多接收10个参数。原创 2023-09-12 20:56:38 · 877 阅读 · 0 评论 -
【spark】dataframe慎用limit
官方:limit通常和order by一起使用,保证结果是确定的当提取的n大时,第二步是比较耗时的如果对取样顺序没有要求,可用tablesample替代,。原创 2023-09-01 17:14:53 · 1011 阅读 · 0 评论 -
【spark】java类在spark中的传递,scala object在spark中的传递
记录一个比较典型的问题,先讲一下背景,有这么一个用java写的类原因:scala的object对应的就是java的静态成员,可以反过来理解java的所有静态成员可被抽取成伴生对象(虽然现实中是scala最终编译成java)。可以看到,JavaClass0并没有被传到executor中,而是重新初始化了一遍。事实也是如此。object是不会被传递到executor的,他们在首次被访问的时候,在executor本地做初始化。只要executor的jvm不消亡,就不会再次初始化。原创 2023-08-29 22:09:07 · 810 阅读 · 0 评论 -
【spark】序列化和反序列化,transient关键字的使用
序列化就是指将一个对象转化为二进制的byte流(注意,不是bit流),然后以文件的方式进行保存或通过网络传输,等待被反序列化读取出来。1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问。如果在driver端不使用instance,那么@transient 不是必须的,序列化会发生,这时候序列化的instance 为null。3)被transient关键字修饰的变量不再能被序列化,一个静态变量不管是否被transient修饰,均不能被序列化。原创 2023-08-29 22:07:24 · 1286 阅读 · 0 评论 -
Scala的序列化,Serialization以及SerialVersionUID
序列化一个Scala对象为文本或者二进制数据,以便支持持久化或者网络传输等需求,并通过读取这些数据,可以反序列化出这个对象。转载 2023-08-08 21:33:45 · 655 阅读 · 0 评论 -
spark 带文件上集群,获取外部文件,--files 使用说明
当使用spark-submit --files时,会将–files后面的文件路径记录下来传给driver进程,然后当启动driver进程时,会调用SparkFiles.addFile(file_path),并复制文件到driver的临时文件目录中。下面解释为什么FileInputStream和Source.fromFile直接写文件名也可以,因为scala io的相对路径取的事jvm的相对路径,而jvm的相对路径的根目录和driver和executor的工作路径是相同的。工作目录下该文件是存在的。原创 2023-08-11 22:10:06 · 3792 阅读 · 0 评论 -
scala连接mysql数据库
scala中通常是通过JDBC组件来连接Mysql。JDBC, 全称为Java DataBase Connectivity standard。原创 2023-08-07 10:55:29 · 1142 阅读 · 0 评论 -
Spark中如何把dataFrame(dataSet).show()的结果集成到 log4j中输出
用df.show得到的输出很美观,但是我们不能将其输出作为字符串,因为show调用的内部showString方法是私有的。有没有什么方法可以让我得到类似的输出,而不需要编写方法来复制相同的功能呢?答案是有的。原创 2023-06-12 23:57:00 · 541 阅读 · 0 评论 -
Spark的dropDuplicates或distinct 对数据去重
消除重复的数据可以通过使用 distinct 和 dropDuplicates 两个方法。原创 2023-04-25 21:43:24 · 3143 阅读 · 1 评论 -
spark 的 repartition
在Spark SQL中,“repartition by column” 是指根据某个列对数据进行重新分区。它可以帮助您通过控制分区键来改善作业的性能。重新分区可以提高分布式作业的性能,因为它可以帮助更好地利用集群中的资源。但同时也要注意,不适度的重新分区可能导致性能下降,因此需要适当的平衡。Spark SQL是Apache Spark的一部分,提供了一种使用SQL语言的方式来处理大数据。其中,“df” 是您要重新分区的数据框,“column_name” 是您想要作为分区键的列的名称。转载 2023-04-20 09:40:32 · 2093 阅读 · 0 评论 -
hadoop fs、hadoop dfs、hdfs fs、hdfs dfs区别
其中scheme和authority参数都是可选的,如果未加指定,就会使用配置中指定的默认scheme。大多数FS Shell命令的行为和对应的Unix Shell命令类似。(1) fs是一个通用的文件系统可以指向任何的文件系统如local,HDFS等,而dfs是分布式文件系统,是针对hdfs的。经验证,hdfs dfs也能控制本地文件系统。即,如果对于的是hdfs文件系统,hdfs dfs是一个同义词。对HDFS文件系统,scheme是。,对本地文件系统,scheme是。(假设你配置文件中的默认值是。原创 2022-10-20 18:03:00 · 2244 阅读 · 0 评论 -
[Spark]-协同过滤
矩阵分解算法则是期望为每一个用户和视频生成一个隐向量,将用户和视频定位到隐向量的表示空间上(如图2(b)所示),距离相近的用户和视频表明兴趣特点接近,在推荐过程中,我们就应该把距离相近的视频推荐给目标用户。如图2(a)所示,协同过滤算法找到用户可能喜欢的视频的方式很直观,就是利用用户的观看历史,找到跟目标用户Joe看过同样视频的相似用户,然后找到这些相似用户喜欢看的其他视频,推荐给目标用户Joe。用户隐向量就是用户矩阵相应的行向量,而物品隐向量就是物品矩阵相应的列向量。.........转载 2022-07-19 15:13:41 · 513 阅读 · 0 评论 -
[Spark]-LSH局部敏感哈希
官方介绍:支持多种距离:、Spark缺点摘自https://www.jianshu.com/p/b72af2d27235:最近有个需求做百万级别实体的相关推荐,离线场景算完入库接口调用,数仓和计算引擎基于Hive和Spark,一开始设想直接老套路embedding+LSH(Spark ml下局部敏感哈希),测了几次都GG了,十分不好用,原因有以下:计算不稳定: Spark的LSH动不动卡着不动或者慢或者OOM,主要原因是join步骤相当消耗资源和桶内数据倾斜导致,然而在倾斜的桶内暴力搜索可能是不值得的,原创 2022-07-13 11:09:10 · 924 阅读 · 0 评论 -
[Spark]-RDD详解之变量&操作
RDD的操作 1.1 概述 RDD整体包含两大类操作 transformation 从现有中创建一个新的数据集 action 在对数据集做一定程度的计算后将结果返回 对于所有的transformation,都是Lazy的,也就是说它不会立即执行,只是单纯的记住怎么样从原来的数据集进行转换的逻辑而已,它仅在某一个计算需要的情况下,才会被真正执行. 因为transformation 的Lazy性,RDD支持在每次计算时都进行重新计算,当然你可以将这个RDD保存下来 (转载 2022-07-11 22:54:11 · 748 阅读 · 0 评论 -
Spark特征工程-归一化 和 分桶
归一化 分桶原创 2022-07-08 18:17:34 · 1295 阅读 · 0 评论 -
Spark特征工程-one-hot 和 multi-hot
one-hot , multi-hot原创 2022-07-08 10:22:20 · 1201 阅读 · 0 评论 -
Spark MLlib特征处理 之 StringIndexer、IndexToString使用说明以及源码剖析
更多内容参考我的大数据学习之路StringIndexer可以把字符串的列按照出现频率进行排序,出现次数最高的对应的Index为0。比如下面的列表进行StringIndexeridcategory0a1b2c3a4a5c就可以得到如下:idcategorycategoryIndex0a0.01b2.02c1.03a0.04a0.05c1.0可以看到出现次数最多的"a",索引为0;次数最少的"b"索引为2。针对训练集中没有出现的字符串值,spark提供了几种处理的方法:下面是基于Spark MLlib 2.2.转载 2022-07-07 17:50:03 · 725 阅读 · 0 评论 -
Spark数据读取和创建
rdd,datarame创建和读取原创 2022-07-07 17:01:40 · 594 阅读 · 0 评论 -
Scala,Spark依赖jar包冲突解决方法
问题背景:在提交任务运行时,报了如下错误:Caused by: java.lang.BootstrapMethodError: call site initialization exception…Caused by: java.lang.invoke.LambdaConversionException: Invalid receiver type interface org.apache.http.Header; not a subtype of implementation type inter原创 2022-04-21 15:31:30 · 4269 阅读 · 0 评论 -
pyspark资源配置
想像scala一样,对spark使用资源做指定,如:spark-submit \--principal $principal \--keytab $keytab \--name Test \--master yarn --deploy-mode cluster \--num-executors 10 \--executor-cores 4 \--executor-memory 16G \--driver-memory 16G \--conf spark.locality.wait=10原创 2022-03-25 15:56:19 · 2742 阅读 · 0 评论 -
pyspark运行原理
python在近几年的势头很猛,在很多的编程语言排行榜中都能占据第一第二的位置。对初学者比较友好,优雅的编程风格,较高的开发效率,这些特点让python成为很多互联网行业从业者的选择。尤其是python在数据科学领域里面丰富的生态支持,让很多软件架构师在既要做系统架构,又要做数据算法的场景中为了统一编程语言,就进入了python的怀抱。在spark支持的开发语言中,python拥有比较高的使用比例。曾经年少的我刚接触spark时, 看到spark可以支持到python来开发,想当然的以为spark应该是转载 2022-03-25 15:51:37 · 653 阅读 · 0 评论 -
spark中HDFS文件操作,hive表操作
import java.io.OutputStreamWriter/** * 读取hdfs文件 * * @param aPath 要读取的文件路径,如hdfs://clusterA/direct1/text1.txt" * @return */val sc = SparkSession.builder().enableHiveSupport().getOrCr...原创 2019-09-16 16:44:35 · 2835 阅读 · 0 评论 -
Spark从hbase 并发取数据,并用spark-shell提交
import org.apache.hadoop.hbase.HBaseConfigurationimport org.apache.hadoop.hbase.io.ImmutableBytesWritableimport org.apache.hadoop.hbase.mapreduce.TableInputFormatimport org.apache.hadoop.hbase.util.Bytesimport org.apache.spark.sql.SparkSessionimport o原创 2021-11-17 17:39:10 · 1302 阅读 · 0 评论 -
Spark读取zip文件原理与详解
import java.io.{BufferedReader, InputStreamReader}import java.util.zip.ZipInputStreamimport org.apache.spark.input.PortableDataStreamval dataAndPortableRDD = sc.binaryFiles("zipData path")val dataRDD = dataAndPortableRDD.flatMap { case (name: Str...原创 2021-08-28 12:05:08 · 2465 阅读 · 0 评论 -
spark常用模板
1. 批任务:import org.apache.spark.sql.SparkSessionimport org.slf4j.LoggerFactory//高性能日志object test{ private val LOGGER = LoggerFactory.getLogger(this.getClass) def main(args: Array[String]): Unit = { args.foreach(x => Util.infoLog(LOG原创 2021-04-02 10:13:54 · 410 阅读 · 0 评论 -
SparkContext did not initialize after waiting for 100000 ms
其他原因比如mater设置的问题这里不赘述,网上查查即可。报这个错还有个很难发现的原因是当我们用:spark-submit--class 相关程序提交程序后报错。如果“相关程序”做了很多其他事情处理之后才运行sparkContext的初始化语句(如val sc = SparkSession.builder().enableHiveSupport().getOr...原创 2019-12-25 16:50:51 · 1412 阅读 · 0 评论 -
Spark中的spark.sql.shuffle.partitions 和spark.default.parallelism参数设置默认partition数目
当不跟随父对象partition数目的shuffle过程发生后,结果的partition会发生改变,这两个参数就是控制这类shuffle过程后,返回对象的partition的经过实测,得到结论:spark.sql.shuffle.partitions 作用于dataframe(val df2=df1.shuffle算子(如df1.orderBy()),的df2的partition就是这个参...原创 2019-10-26 19:12:56 · 10074 阅读 · 1 评论 -
Spark中的shuffle算子
最简单的方法,不用查文件It is actually extremely easy to find this out, without the documentation. For any of these functions just create an RDD and call to debug string, here is one example you can do the rest...转载 2019-10-26 17:46:29 · 747 阅读 · 1 评论 -
Spark中RDD的创建与存储
RDD,全称为Resilient Distributed Datasets,是一个容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区。RDD是只读的、分区记录的集合。RDD不需要物化。RDD含有如何从其他RDD衍生(即计算)出本RDD的相关信息(即Lineage),据此可以从物理存储的数据计算出相应的RDD分区。每个RDD有5个主要的属性:...原创 2019-02-19 17:04:40 · 4674 阅读 · 0 评论 -
从Spark Row 到 GenericRowWithSchema
Dataframe.collect () 是常用的将分布式数据载入到Driver的方法,得到的是Array[GenericRowWithSchema]类型,常常需要从GenericRowWithSchema提取数据,具体所以了解GenericRowWithSchema类型是十分有必要的。 而GenericRowWithSchema继承自 org.apache.spark.sql.Row,...原创 2019-02-19 17:05:41 · 7197 阅读 · 1 评论 -
Spark Streaming 中的DStream
Discretized Stream 也叫 DStream) 是 Spark Streaming 对于持续数据流的一种基本抽象,在内部实现上,DStream 会被表示成一系列连续的 RDD(弹性分布式数据集),每一个 RDD 都代表一定时间间隔内到达的数据。(并不是说DStream的元素是RDD,而是表现和方法都和RDD类似,DStream可以说约等于RDD,因此在操作中,很多人都把DStream...原创 2019-02-19 17:06:47 · 704 阅读 · 0 评论 -
Spark Dataframe中的Column
Spark Dataframe中的Column在计算时会基于某个Dataframe实例。 然而,有时候Column实例独立于Datafame存在,这让人很疑惑,实际上,Spark sql中的Column对象有以下存在方式: df("columnName") // On a specific DataFrame.col("columnName") // A generic colu...原创 2019-02-19 17:08:04 · 3992 阅读 · 0 评论 -
Spark Dataframe, Dataset, rdd persist cache触发的巨坑
由于Spark操作都是底层rdd,所以这里仅以rdd做介绍,dataset和daraframe原理一样。 由于rdd的懒加载机制,官方文档说明在rdd.persist时需要用rdd的action来触发其执行。 有时我们为了追求性能,会选用一些性能高的操作,如rdd.take(1),rdd.isEmpty()来触发。 但是!!! 如果rdd具有多个partition,...原创 2019-02-19 17:10:52 · 2865 阅读 · 0 评论 -
Spark Dataframe 的创建方法与存储
创建方法一、通过 toDF()函数创建// sc is an existing SparkContext.val sqlContext = new org.apache.spark.sql.SQLContext(sc)// this is used to implicitly convert an RDD or Seq to a DataFrame. cannot be ...原创 2019-02-19 17:13:33 · 3232 阅读 · 0 评论 -
Spark RDD的函数详解
RDD支持两种操作:转换(transformation)从现有的数据集创建一个新的数据集;而动作(actions)在数据集上运行计算后,返回一个值给驱动程序。 区别是tranformation输入RDD,输出RDD,而action输入RDD,输出非RDD。transformation是缓释执行的,action是即刻执行的。例如,df1.map就是一种转换,它在使用时,并没有被调用,只有和df1相关...原创 2019-02-19 17:14:04 · 862 阅读 · 0 评论 -
Spark DataFrame 函数
DataFrame 一旦被创建,则可被DataFrame, column和 function中的函数操作,这些函数叫做 domain-specific-language (DSL) 函数。 DataFrame函数和RDD一样,也分为action和transformation,且后者是惰性的。 Spark 1.5.1函数:dataframe:http://spark.apac...原创 2019-02-19 17:16:07 · 959 阅读 · 0 评论 -
spark dataframe, rdd unpersist的坑
目前使用的Spark 2.1.0有一个很坑爹的问题,如果persist一个df1后unpersist 与df1相关的df0,那么df1也会被unpersist掉,导致后续用到df1的地方又需要重新算df1,降低性能。这个问题直到Spark2.4.0才解决。问题复现如下:但是rdd的persist不会因为linage的rdd被unpersist后而消失df...原创 2019-03-23 11:40:57 · 6049 阅读 · 2 评论 -
shell上启动spark
export localroot=/放想带上去的jar包、配置的根目录启动spark(可自己配相应参数):spark-shell \--name "content_baidunlp" \--master yarn-client \--num-executors 4 \--executor-cores 2 \--executor-memory 3G \--driver-mem...原创 2019-09-16 19:57:29 · 567 阅读 · 0 评论 -
Spark RDD、Dataset、Dataframe的head(),first(),take(),isEmpty()
RDD:rdd无head函数take(num: Int): Array[T]: 返回rdd的前num个元素组成array到driver。若rdd为nothing或null会报错first(): T: 返回rdd的第一个元素,若rdd为空,或为nothing或null会报错isEmpty(): Boolean : 判断rdd是否为空(空分区或空元素都为空,即使分区有一个,元素为空也为...原创 2019-02-18 15:19:58 · 7594 阅读 · 0 评论