
spark
炼丹师666
要学神仙,驾鹤飞天,点石成金,妙不可言!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
spark代码Broadcast优化机制
Spark Join的分类和实现机制Broadcast Hash Join当Join的一张表很小的时候,使用broadcast hash join。 Broadcast Hash Join的条件有以下几个:被广播的表需要小于spark.sql.autoBroadcastJoinThreshold所配置的信息,默认是10M;基表不能被广播,比如left outer join时,只能广播右表。broadcast hash join可以分为两步:broadcast阶段:将小表广播到所有的execu原创 2021-03-31 13:26:18 · 368 阅读 · 0 评论 -
pyspark_createOrReplaceTempView
DataFrame注册成SQL的表:DF_temp.createOrReplaceTempView('DF_temp_tv')select * from DF_temp_tv原创 2020-03-25 11:19:52 · 2627 阅读 · 2 评论 -
pyspark_聚合操作groupby_sum
print('*****************整体变化:')print(DF_temp.groupby().agg({'deposit_increase':'sum'}).collect())print('***************存款人均变化:')print(DF_temp.groupby().agg({'deposit_increase':'mean'}).collect())...原创 2020-07-01 22:19:26 · 2113 阅读 · 0 评论 -
pysaprk常用操作
参考:https://www.izhangchao.com/internet/internet_234179.htmlhttps://blog.youkuaiyun.com/sinat_26917383/article/details/80500349原创 2020-03-24 16:36:52 · 221 阅读 · 0 评论 -
spark sql加载csv文件并筛选
spark sql加载csv文件并筛选from pyspark.sql.types import TimestampTypeimport pandas as pdpd_df = pd.read_csv('/home/product_with_decd.csv')DF = spark.createDataFrame(pd_df)DF = DF.withColumn('before_afte...原创 2020-03-24 14:32:47 · 507 阅读 · 0 评论 -
大数据groupby太慢该如何优化
算子调优五:reduceByKey本地聚合参考:https://www.cnblogs.com/dflmg/p/10430181.htmlreduceByKey相较于普通的shuffle操作一个显著的特点就是会进行map端的本地聚合,map端会先对本地的数据进行combine操作,然后将数据写入给下个stage的每个task创建的文件中,也就是在map端,对每一个key对应的value,执行r...原创 2020-03-04 22:46:21 · 3568 阅读 · 0 评论 -
宽依赖和窄依赖的区别
宽依赖和窄依赖的区别参考:https://blog.youkuaiyun.com/u013384984/article/details/80963455总结一下:窄依赖:父RDD中,每个分区内的数据,都只会被子RDD中特定的分区所消费,为窄依赖:**宽依赖:**父RDD中,分区内的数据,会被子RDD内多个分区消费,则为宽依赖: 会产生shuffle,遇到宽依赖,则划分为多个stage...原创 2020-01-13 21:49:00 · 1785 阅读 · 0 评论 -
sparkml_实战全流程_LogisticRegression(三)
上面使用的使用K-Fold来进行超参调优,K-Fold交叉验证往往非常耗时,使用1-Fold的交叉验证(即将数据集按比例分为训练集合验证集)能大大缩短时间参考:https://www.jianshu.com/p/20456b512fa7# 上面使用的使用K-Fold来进行超参调优,K-Fold交叉验证往往非常耗时,# 使用1-Fold的交叉验证(即将数据集按比例分为训练集合验证集)能大大缩...原创 2020-01-12 17:50:26 · 415 阅读 · 0 评论 -
sparkml_实战全流程_LogisticRegression(二)
交叉验证网格搜索import pyspark.ml.tuning as tune# 超参调优:grid search和train-validation splitting # 网格搜索import pyspark.ml.tuning as tunelogistic = cl.LogisticRegression(labelCol='INFANT_ALIVE_AT_REPORT...原创 2020-01-12 17:43:15 · 417 阅读 · 0 评论 -
sparkml_实战全流程_LogisticRegression(一)
sparkml_实战全流程_LogisticRegression2.1 加载数据创建转换器、评估器birth place使用one-hot编码创建一个评估器VectorAssembler接受以下输入列类型:所有数值类型、布尔类型和向量类型2.3 创建一个管道、拟合模型拟合模型 randomSplit划分测试集 训练集2.4 评估模型2.5 保存模型 保存管道载入模型...原创 2020-01-12 17:26:07 · 648 阅读 · 0 评论 -
python_采样_多个散点图在一起
参考:https://www.jianshu.com/p/14e635662fff#sampleBy根据指定字段分层抽样sample_data = df.sampleBy('gender',{1:0.0002,2:0.0002}).select("balance","numTrans","numIntlTrans")sample_data.take(5)To put multiple 2...原创 2020-01-12 16:45:49 · 7698 阅读 · 0 评论 -
sparksql_可视化组分布_histogram
sparksql_可视化组分布_histogram可参考:https://blog.youkuaiyun.com/weixin_39599711/article/details/79072691# 如果数据是几百万行,第二种方法显然不可取。因此需要先聚合数据。hists = fraud_df.select('balance').rdd.flatMap(lambda row: row).histogra...原创 2020-01-12 16:36:55 · 588 阅读 · 0 评论 -
sparksql_分析相关性
只要数据是DataFrame格式,在PySpark中计算相关性非常容易。#唯一的困难是.corr(…)方法现在支持Pearson相关系数,而它只能计算成对的相关性# 只要数据是DataFrame格式,在PySpark中计算相关性非常容易。# 唯一的困难是.corr(…)方法现在支持Pearson相关系数,而它只能计算成对的相关性,如下:fraud_df.corr('balance', ...原创 2020-01-12 16:28:18 · 1528 阅读 · 0 评论 -
sparksql_探索数据分布
读取csv文件创建dataframe的 schema: 获取schema用.groupby(…)方法分组统计用 .describe()方法对数值进行描述性统计:偏态&离散程度参考:https://blog.youkuaiyun.com/weixin_39599711/article/details/79072691import pyspark.sql.types as typNext, ...原创 2020-01-12 16:06:27 · 916 阅读 · 0 评论 -
sparksql_标记异常值_提取异常值_approxQuantile
sparksql_标记异常值_提取异常值参考:https://www.jianshu.com/p/56cff9f6e0bedf_outliers = spark.createDataFrame([(1,143.5,5.3,28), (2,154.2,5.5,45), ...原创 2020-01-12 15:26:48 · 2719 阅读 · 0 评论 -
基于箱型图如何确定异常值
五数概念(five-number summary)由中位数(Q2Q2)、四分位数Q1Q1和Q3Q3、最大(Maximum)和最小(Minimum)观测值组成,按次序Minimum,Q1Q1,Q2Q2,Q3Q3,Maximum。可疑的离群点通常是落在Q3Q3 之上或Q1Q1 之下至少 1.5IQR参考:https://blog.youkuaiyun.com/been123456789jimmy/articl...原创 2020-01-12 14:49:16 · 928 阅读 · 0 评论 -
sparksql_使用平均数填充缺失值
sparksql_填充缺失值#为none值填充新值means = df_miss_no_income.agg(*[fn.mean(c).alias(c) for c in df_miss_no_income.columns if c != 'gender'])\ ....原创 2020-01-12 14:34:17 · 1751 阅读 · 0 评论 -
sparksql_删除行_去除行
#income列缺失太多,基本无用了,现在要去掉这一列数据#thresh=3 表示一行中非NONE的数据少于3个则去除该行#income列缺失太多,基本无用了,现在要去掉这一列数据df_miss_no_income = df_miss.select([c for c in df_miss.columns if c != 'income'])df_miss_no_income.show()...原创 2020-01-12 14:27:28 · 5456 阅读 · 1 评论 -
sparksql_统计每行缺失值_统计每列缺失值
sparksql_统计每行缺失值_统计每列缺失值df_miss = spark.createDataFrame([ (1, 143.5, 5.6, 28, 'M', 100000), (2, 167.2, 5.4, 45, 'M', None), (3, None , 5.2, None, None, None), (4...原创 2020-01-12 14:21:03 · 5044 阅读 · 2 评论 -
sparksql_monotonically_increasing_id 生成唯一自增ID
#发现有重复的ID,我们可能需要重新给每行数据分分配唯一的新的ID来标示它们# 增加一个新列df.withColumn('new_id', fn.monotonically_increasing_id()).show()#withColums 新增一列#monotonically_increasing_id 生成唯一自增ID+---+------+------+---+------+--...原创 2020-01-12 13:23:20 · 3113 阅读 · 0 评论 -
sparksql_count_countDistinct
#ok.现在来计算下是否有重复的ID# count 计算行数 countDistinct计算id的唯一数import pyspark.sql.functions as fn #导入spark sql的一些函数df.agg( fn.count('id').alias('count'), fn.countDistinct('id').alias('distinct')...原创 2020-01-12 13:21:38 · 3296 阅读 · 0 评论 -
sparksq_去重
#分别打印dataframe未去重和去重后的行数print('Count of rows: {0}'.format(df.count()))print('Count of distinct rows: {0}'.format(df.distinct().count()))#去掉重复的行df = df.dropDuplicates()df.show()#计算排除id后是否有重复的数据...原创 2020-01-11 21:48:35 · 173 阅读 · 0 评论 -
sparksql_分析航线数据_DataFrame场景
sparksql_分析航线数据_DataFrame场景# Set File Paths# 设置文件路径 读取csv文件flightPerfFilePath = "/databricks-datasets/flights/departuredelays.csv"airportsFilePath = "/databricks-datasets/flights/airport-codes-n...原创 2020-01-11 21:27:26 · 540 阅读 · 1 评论 -
sparksql查询_筛选_过滤
#1.获取DataFrame中数据的行数print("1.利用SQL查询输出DataFrame中数据的行数:\n")spark.sql("select count(1) as num from swimmers").show() #2.利用where子句获取age=21的id,ageprint("2.利用where子句获取age=21的id,age:\n")spark.sql("sel...原创 2020-01-11 20:34:14 · 3097 阅读 · 0 评论 -
DataFrame API查询_过滤_filter
#1.输出DataFrame中的行数print("1.输出DataFrame中的行数:\n{}".format(swimmers.count())) #2.用filter获取age=20的idprint("2.输出DataFrame中age=20的id:\n")swimmers.select("id","age").filter("age=20").show() #3.获取eyeCo...原创 2020-01-11 20:26:26 · 570 阅读 · 0 评论 -
RDD转换成DataFrame的2种方式
(1)使用反射推断模式 抽样确定在创建DataFrame时,如果没有指定模式,就会使用printSchema()方法自带的模式定义。上一小节的DataFrame示例就是通过这种方法创建的。这种方法能够更为简便的创建DataFrame,但不能精细地控制DataFrame的模式。(2)以编程方式指定模式 手动确定类型%pyspark #导入类型from pyspark.sql.ty...原创 2020-01-11 17:59:15 · 893 阅读 · 0 评论 -
RDD和DataFrame的区别
结构信息:左侧的RDD[Person]虽然以Person为类型参数,但Spark框架本身不了解Person类的内部结构。而右侧的DataFrame却提供了详细的结构信息提升执行效率RDD API是函数式的,强调不变性,在大部分场景下倾向于创建新对象而不是修改老对象。这一特点虽然带来了干净整洁的API,却也使得Spark应用程序在运行期倾向于创建大量临时对象参考:https://www....原创 2020-01-11 17:35:07 · 434 阅读 · 0 评论 -
常见转换操作和行动操作
提取有用信息的例子定义纯Python方法会降低应用程序的速度,因为Spark需要在Python解释器和JVM之间不断地来回切换。要尽量使用内置的Spark函数# 需要注意一点。# 定义纯Python方法会降低应用程序的速度,因为Spark需要在Python解释器和JVM之间不断地来回切换。要尽量使用内置的Spark函数def extractInformation(row): ...原创 2020-01-11 16:43:08 · 1700 阅读 · 0 评论 -
Spark中RDD的理解
Spark中RDD的理解RDD:RDD是Spark的计算模型 RDD(Resilient Distributed Dataset)叫做弹性的分布式数据集合,是Spark中最基本的数据抽象,它代表一个不可变、只读的,被分区的数据集操作RDD就像操作本地集合一样,数据会被分散到多台机器中(以分区为单位),需关心底层的调度细节如何创建RDD:1)集合并行化创建(通过scala集合创建)scala...原创 2020-01-11 15:11:16 · 233 阅读 · 0 评论 -
spark集中取数方式的区别collect()_take()_foreach()
spark集中取数方式的区别RDD 的一些行动操作会以普通集合或者值的形式将 RDD 的部分或全部数据返回驱动器程序中。把数据返回驱动器程序中最简单、最常见的操作是 collect(),它会将整个 RDD 的内容返回。collect() 通常在单元测试中使用,因为此时 RDD 的整个内容不会很大,collect() 要求所有数据都必须能一同放入单台机器的内存中。take(n) 返回 ...原创 2019-12-15 12:54:34 · 2234 阅读 · 0 评论 -
map()和flatMap()的区别
map()和flatMap()的区别map将函数作用到数据集的每一个元素上,生成一个新的分布式的数据集(RDD)返回flatMap会先执行map的操作,再将所有对象合并为一个对象,返回值是一个Sequence3.5.1 基本RDD首先来讲讲哪些转化操作和行动操作受任意数据类型的 RDD 支持。1. 针对各个元素的转化操作你很可能会用到的两个最常用的转化操作是 map() 和 filte...原创 2019-12-15 12:17:39 · 1636 阅读 · 0 评论 -
Notebook配置使用PySpark
Notebook配置使用PySpark参考这篇博客:https://blog.youkuaiyun.com/a1272899331/article/details/90081945我使用这种方法成功pyspark代码示例:#方法2需要复制这三行import findsparkfindspark.init()import pyspark #方法1直接从这里开始复制import rando...原创 2019-12-12 14:39:01 · 440 阅读 · 0 评论 -
Spark性能优化指南_调优
Spark性能优化指南——基础篇参考这篇文章:https://blog.youkuaiyun.com/qq_23160237/article/details/85393937?utm_source=app转载 2019-11-24 11:59:33 · 169 阅读 · 0 评论 -
Spark_分区、任务等概念学习
Spark_分区、任务等概念学习Spark的Driver、Job和Stagecsdn jwLee例子说明在这个例子中,假设你需要做如下一些事情:将一个包含人名和地址的文件加载到RDD1中将一个包含人名和电话的文件加载到RDD2中通过name来Join RDD1和RDD2,生成RDD3在RDD3上做Map,给每个人生成一个HTML展示卡作为RDD4将RDD4保存到文件在RDD1上...转载 2019-11-24 11:05:59 · 314 阅读 · 0 评论 -
spark中job、stage、task、partition、executor等概念理解
概念1. job定义:我们都知道,在spark rdd中,有action、transform操作,当真正触发action时,才真正执行计算,此时产生一个job任务。2. stage定义: 以shuffle为界,当在一个job任务中涉及shuffle操作时,会进行stage划分,产生一个或多个stage。3. task定义: 一个stage可能包含一个或者多个task任务,ta...转载 2019-11-24 10:35:56 · 2016 阅读 · 0 评论 -
安装spark,Unsupported major.minor version 52.0解决办法
安装spark,Unsupported major.minor version 52.0解决办法原因为电脑安装的JDK版本不是JDK1.8参考:https://blog.youkuaiyun.com/hchhan/article/details/81106404原创 2019-10-20 16:48:11 · 685 阅读 · 0 评论 -
安装spark,Could not locate executable null\bin\winutils.exe in the Hadoop binaries报错
安装spark,Could not locate executable null\bin\winutils.exe in the Hadoop binaries报错缺少winutils.exe程序参考这篇文章https://blog.youkuaiyun.com/weixin_41122339/article/details/81141913...原创 2019-10-20 16:43:02 · 412 阅读 · 0 评论