数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
五、DataFrame
一个
DataFrame
实例代表了基于命名列的分布式数据集。为了访问
DataFrame
的列,有两种方式:- 通过属性的方式:
df.key
- 通过字典的方式:
df[key]
。推荐用这种方法,因为它更直观。
它并不支持
pandas.DataFrame
中其他的索引,以及各种切片方式- 通过属性的方式:
5.1 属性
.columns
:以列表的形式返回所有的列名.dtypes
:以列表的形式返回所有的列的名字和数据类型。形式为:[(col_name1,col_type1),...]
.isStreaming
:如果数据集的数据源包含一个或者多个数据流,则返回True
.na
:返回一个DataFrameNaFunctions
对象,用于处理缺失值。.rdd
: 返回DataFrame
底层的RDD
(元素类型为Row
).schema
:返回DataFrame
的schema
.stat
:返回DataFrameStatFunctions
对象,用于统计.storageLevel
:返回当前的缓存级别.write
:返回一个DataFrameWriter
对象,它是no-streaming DataFrame
的外部存储接口.writeStream
:返回一个DataStreamWriter
对象,它是streaming DataFrame
的外部存储接口
5.2 方法
5.2.1 转换操作
聚合操作:
.agg(*exprs)
:在整个DataFrame
开展聚合操作(是df.groupBy.agg()
的快捷方式)示例:
xxxxxxxxxx
df.agg({"age": "max"}).collect() #在 agg 列上聚合 # 结果为:[Row(max(age)=5)] # 另一种方式: from pyspark.sql import functions as F df.agg(F.max(df.age)).collect().filter(condition)
:对行进行过滤。它是
where()
的别名参数:
condition
:一个types.BooleanType
的Column
,或者一个字符串形式的SQL
的表达式
示例:
xxxxxxxxxx
df.filter(df.age > 3).collect() df.filter("age > 3").collect() df.where("age = 2").collect()
分组:
.cube(*cols)
:根据当前DataFrame
的指定列,创建一个多维的cube
,从而方便我们之后的聚合过程。参数:
cols
:指定的列名或者Column
的列表
返回值:一个
GroupedData
对象
.groupBy(*cols)
:通过指定的列来将DataFrame
分组,从而方便我们之后的聚合过程。参数:
cols
:指定的列名或者Column
的列表
返回值:一个
GroupedData
对象它是
groupby
的别名
.rollup(*cols)
:创建一个多维的rollup
,从而方便我们之后的聚合过程。参数:
cols
:指定的列名或者Column
的列表
返回值:一个
GroupedData
对象
排序:
.orderBy(*cols, **kwargs)
:返回一个新的DataFrame
,它根据旧的DataFrame
指定列排序参数:
cols
:一个列名或者Column
的列表,指定了排序列ascending
:一个布尔值,或者一个布尔值列表。指定了升序还是降序排序- 如果是列表,则必须和
cols
长度相同
- 如果是列表,则必须和
.sort(*cols, **kwargs)
:返回一个新的DataFrame
,它根据旧的DataFrame
指定列排序参数:
cols
:一个列名或者Column
的列表,指定了排序列ascending
:一个布尔值,或者一个布尔值列表。指定了升序还是降序排序- 如果是列表,则必须和
cols
长度相同
- 如果是列表,则必须和
示例:
x from pyspark.sql.functions import * df.sort(df.age.desc()) df.sort("age", ascending=False) df.sort(asc("age")) df.orderBy(df.age.desc()) df.orderBy("age", ascending=False) df.orderBy(asc("age"))
.sortWithinPartitions(*cols, **kwargs)
:返回一个新的DataFrame
,它根据旧的DataFrame
指定列在每个分区进行排序参数:
cols
:一个列名或者Column
的列表,指定了排序列ascending
:一个布尔值,或者一个布尔值列表。指定了升序还是降序排序- 如果是列表,则必须和
cols
长度相同
- 如果是列表,则必须和
调整分区:
.coalesce(numPartitions)
:返回一个新的DataFrame
,拥有指定的numPartitions
分区。只能缩小分区数量,而无法扩张分区数量。如果
numPartitions
比当前的分区数量大,则新的DataFrame
的分区数与旧DataFrame
相同它的效果是:不会混洗数据
参数:
numPartitions
:目标分区数量
.repartition(numPartitions, *cols)
:返回一个新的DataFrame
,拥有指定的numPartitions
分区。- 结果
DataFrame
是通过hash
来分区 - 它可以增加分区数量,也可以缩小分区数量
- 结果
集合操作:
.crossJoin(other)
:返回一个新的DataFrame
,它是输入的两个DataFrame
的笛卡儿积可以理解为
[row1,row2]
,其中row1
来自于第一个DataFrame
,row2
来自于第二个DataFrame
参数:
other
:另一个DataFrame
对象
.intersect(other)
:返回两个DataFrame
的行的交集参数:
other
:另一个DataFrame
对象
.join(other,on=None,how=None)
:返回两个DataFrame
的join
参数:
other
:另一个DataFrame
对象on
:指定了在哪些列上执行对齐。可以为字符串或者Column
(指定单个列)、也可以为字符串列表或者Column
列表(指定多个列)注意:要求两个
DataFrame
都存在这些列how
:指定join
的方式,默认为'inner'
。可以为:inner
、cross
、outer
、full
、full_outer
、left
、left_outer
、right
、right_outer
、left_semi
、left_anti
.subtract(other)
:返回一个新的DataFrame
,它的行由位于self
中、但是不在other
中的Row
组成。参数:
other
:另一个DataFrame
对象
.union(other)
: 返回两个DataFrame
的行的并集(它并不会去重)它是
unionAll
的别名参数:
other
:另一个DataFrame
对象
统计:
.crosstab(col1, col2)
:统计两列的成对频率。要求每一列的distinct
值数量少于 $ MathJax-Element-1 $ 个。最多返回 $ MathJax-Element-2 $ 对频率。它是
DataFrameStatFunctions.crosstab()
的别名结果的第一列的列名为,
col1_col2
,值就是第一列的元素值。后面的列的列名就是第二列元素值,值就是对应的频率。参数:
col1,col2
:列名字符串(或者Column
)
示例:
xxxxxxxxxx
df =pd.DataFrame({'a':[1,3,5],'b':[2,4,6]}) s_df = spark_session.createDataFrame(df) s_df.crosstab('a','b').collect() #结果: [Row(a_b='5', 2=0, 4=0, 6=1), Row(a_b='1', 2=1, 4=0, 6=0), Row(a_b='3', 2=0, 4=1, 6=0)]
.describe(*cols)
:计算指定的数值列、字符串列的统计值。统计结果包括:
count、mean、stddev、min、max
该函数仅仅用于探索数据规律
参数:
cols
:列名或者多个列名字符串(或者Column
)。如果未传入任何列名,则计算所有的数值列、字符串列
.freqItems(cols,support=None)
:寻找指定列中频繁出现的值(可能有误报)它是
DataFrameStatFunctions.freqItems()
的别名参数:
cols
:字符串的列表或者元组,指定了待考察的列support
:指定所谓的频繁的标准(默认是 1%)。该数值必须大于 $ MathJax-Element-3 $
移除数据:
.distinct()
:返回一个新的DataFrame
,它保留了旧DataFrame
中的distinct
行。即:根据行来去重
.drop(*cols)
:返回一个新的DataFrame
,它剔除了旧DataFrame
中的指定列。参数:
cols
:列名字符串(或者Column
)。如果它在旧DataFrame
中不存在,也不做任何操作(也不报错)
.dropDuplicates(subset=None)
:返回一个新的DataFrame
,它剔除了旧DataFrame
中的重复行。它与
.distinct()
区别在于:它仅仅考虑指定的列来判断是否重复行。参数:
subset
:列名集合(或者Column
的集合)。如果为None
,则考虑所有的列。
.drop_duplicates
是.dropDuplicates
的别名
.dropna(how='any', thresh=None, subset=None)
:返回一个新的DataFrame
,它剔除了旧DataFrame
中的null
行。它是
DataFrameNaFunctions.drop()
的别名参数:
how
:指定如何判断null
行的标准。'all'
:所有字段都是na
,则是空行;'any'
:任何字段存在na
,则是空行。thresh
:一个整数。当一行中,非null
的字段数量小于thresh
时,认为是空行。如果该参数设置,则不考虑how
subset
:列名集合,给出了要考察的列。如果为None
,则考察所有列。
.limit(num)
:返回一个新的DataFrame
,它只有旧DataFrame
中的num
行。
采样、拆分:
.randomSplit(weights, seed=None)
:返回一组新的DataFrame
,它是旧DataFrame
的随机拆分参数:
weights
:一个double
的列表。它给出了每个结果DataFrame
的相对大小。如果列表的数值之和不等于 1.0,则它将被归一化为 1.0seed
:随机数种子
示例:
xxxxxxxxxx
splits = df.randomSplit([1.0, 2.0], 24) splits[0].count()
.sample(withReplacement, fraction, seed=None)
:返回一个新的DataFrame
,它是旧DataFrame
的采样参数:
withReplacement
:如果为True
,则可以重复采样;否则是无放回采样fractions
:新的DataFrame
的期望大小(占旧DataFrame
的比例)。spark
并不保证结果刚好满足这个比例(只是一个期望值)- 如果
withReplacement=True
:则表示每个元素期望被选择的次数 - 如果
withReplacement=False
:则表示每个元素期望被选择的概率
- 如果
seed
:随机数生成器的种子
.sampleBy(col, fractions, seed=None)
:返回一个新的DataFrame
,它是旧DataFrame
的采样它执行的是无放回的分层采样。分层由
col
列指定。参数:
col
:列名或者Column
,它给出了分层的依据fractions
:一个字典,给出了每个分层抽样的比例。如果某层未指定,则其比例视作 0
示例:
xxxxxxxxxx
sampled = df.sampleBy("key", fractions={0: 0.1, 1: 0.2}, seed=0) # df['key'] 这一列作为分层依据,0 抽取 10%, 1 抽取 20%
替换:
.replace(to_replace, value=None, subset=None)
:返回一组新的DataFrame
,它是旧DataFrame
的数值替代结果它是
DataFrameNaFunctions.replace()
的别名当替换时,
value
将被类型转换到目标列参数:
to_replace
:可以为布尔、整数、浮点数、字符串、列表、字典,给出了被替代的值。- 如果是字典,则给出了每一列要被替代的值
value
:一个整数、浮点数、字符串、列表。给出了替代值。subset
:列名的列表。指定要执行替代的列。
.fillna(value, subset=None)
:返回一个新的DataFrame
,它替换了旧DataFrame
中的null
值。它是
DataFrameNaFunctions.fill()
的别名参数:
value
:一个整数、浮点数、字符串、或者字典,用于替换null
值。如果是个字典,则忽略subset
,字典的键就是列名,指定了该列的null
值被替换的值。subset
:列名集合,给出了要被替换的列
选取数据:
.select(*cols)
:执行一个表达式,将其结果返回为一个DataFrame
参数:
cols
:一个列名的列表,或者Column
表达式。如果列名为*
,则扩张到所有的列名
示例:
xxxxxxxxxx
df.select('*') df.select('name', 'age') df.select(df.name, (df.age + 10).alias('age'))
.selectExpr(*expr)
:执行一个SQL
表达式,将其结果返回为一个DataFrame
参数:
expr
:一组SQL
的字符串描述
示例:
xxxxxxxxxx
df.selectExpr("age * 2", "abs(age)")
.toDF(*cols)
:选取指定的列组成一个新的DataFrame
参数:
cols
:列名字符串的列表
.toJSON(use_unicode=True)
:返回一个新的DataFrame
,它将旧的DataFrame
转换为RDD
(元素为字符串),其中每一行转换为json
字符串。
列操作:
.withColumn(colName, col)
:返回一个新的DataFrame
,它将旧的DataFrame
增加一列(或者替换现有的列)参数:
colName
:一个列名,表示新增的列(如果是已有的列名,则是替换的列)col
:一个Column
表达式,表示新的列
示例:
xxxxxxxxxx
df.withColumn('age2', df.age + 2)
.withColumnRenamed(existing, new)
:返回一个新的DataFrame
,它将旧的DataFrame
的列重命名参数:
existing
:一个字符串,表示现有的列的列名col
:一个字符串,表示新的列名
5.2.2 行动操作
查看数据:
.collect()
:以Row
的列表的形式返回所有的数据.first()
:返回第一行(一个Row
对象).head(n=None)
:返回前面的n
行参数:
n
:返回行的数量。默认为1
返回值:
- 如果返回1行,则是一个
Row
对象 - 如果返回多行,则是一个
Row
的列表
- 如果返回1行,则是一个
.show(n=20, truncate=True)
:在终端中打印前n
行。它并不返回结果,而是
print
结果参数:
n
:打印的行数truncate
:如果为True
,则超过20个字符的字符串被截断。如果为一个数字,则长度超过它的字符串将被截断。
.take(num)
:以Row
的列表的形式返回开始的num
行数据。参数:
num
:返回行的数量
.toLocalIterator()
:返回一个迭代器,对它迭代的结果就是DataFrame
的每一行数据(Row
对象)
统计:
.corr(col1, col2, method=None)
:计算两列的相关系数,返回一个浮点数。当前仅支持皮尔逊相关系数DataFrame.corr()
是DataFrameStatFunctions.corr()
的别名参数:
col,col2
:为列的名字字符串(或者Column
)。method
:当前只支持'pearson'
.cov(col1,col2)
:计算两列的协方差。DataFrame.cov()
是DataFrameStatFunctions.cov()
的别名参数:
col,col2
:为列的名字字符串(或者Column
)
.count()
:返回当前DataFrame
有多少行
遍历:
.foreach(f)
:对DataFrame
中的每一行应用f
- 它是
df.rdd.foreach()
的快捷方式
- 它是
.foreachPartition(f)
:对DataFrame
的每个分区应用f
它是
df.rdd.foreachPartition()
的快捷方式示例:
xxxxxxxxxx
def f(person): print(person.name) df.foreach(f) def f(people): for person in people: print(person.name) df.foreachPartition(f)
.toPandas()
:将DataFrame
作为pandas.DataFrame
返回- 只有当数据较小,可以在驱动器程序中放得下时,才可以用该方法
5.2.3 其它方法
缓存:
.cache()
:使用默认的storage level
缓存DataFrame
(缓存级别为:MEMORY_AND_DISK
).persist(storageLevel=StorageLevel(True, True, False, False, 1))
:缓存DataFrame
参数:
storageLevel
:缓存级别。默认为MEMORY_AND_DISK
.unpersist(blocking=False)
:标记该DataFrame
为未缓存的,并且从内存和磁盘冲移除它的缓存块。
.isLocal()
:如果collect()
和take()
方法能本地运行(不需要任何executor
节点),则返回True
。否则返回False
.printSchema()
:打印DataFrame
的schema
.createTempView(name)
:创建一个临时视图,name
为视图名字。临时视图是
session
级别的,会随着session
的消失而消失。如果指定的临时视图已存在,则抛出
TempTableAlreadyExistsException
异常。参数:
name
:视图名字
示例:
xxxxxxxxxx
df.createTempView("people") df2 = spark_session.sql("select * from people")
.createOrReplaceTempView(name)
:创建一个临时视图,name
为视图名字。如果该视图已存在,则替换它。参数:
name
:视图名字
.createGlobalTempView(name)
:创建一个全局临时视图,name
为视图名字spark sql
中的临时视图是session
级别的,会随着session
的消失而消失。如果希望一个临时视图跨session
而存在,则可以建立一个全局临时视图。如果指定的全局临时视图已存在,则抛出
TempTableAlreadyExistsException
异常。全局临时视图存在于系统数据库
global_temp
中,必须加上库名取引用它参数:
name
:视图名字
示例:
xxxxxxxxxx
df.createGlobalTempView("people") spark_session.sql("SELECT * FROM global_temp.people").show()
.createOrReplaceGlobalTempView(name)
:创建一个全局临时视图,name
为视图名字。如果该视图已存在,则替换它。参数:
name
:视图名字
.registerTempTable(name)
:创建一个临时表,name
为表的名字。在
spark 2.0
中被废弃,推荐使用createOrReplaceTempView
.explain(extended=False)
:打印logical plan
和physical plan
,用于调试模式参数:
extended
:如果为False
,则仅仅打印physical plan
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论