【pyspark】常用api(1)

subtract 差集

返回自身未包含在其他值中的每个值。

x = sc.parallelize(['A','A','B'])
y = sc.parallelize(['D','C','A'])
z = x.subtract(y)
print('x 和 y 的差集是: ', z.collect())
 
>>> x 和 y 的差集是:  ['B']

subtract的行为是删除左数据帧中的行的所有实例(如果存在于右数据帧中)。

数据帧,nsdf,我想对它进行5%的采样。nsdf看起来像这样:

col1
8
7
7
8
7
8
8
7
(... and so on)

样本sdf是这样的 sdf = nsdf.sample(0.05)

然后我想从nsdf中删除sdf中的行。现在,我想我可以使用nsdf.subtract(sdf),但这将删除nsdf中与sdf中任何行匹配的所有行。例如,如果sdf包含

col1
7
8

nsdf中的每一行都将被删除,因为它们都是7或8。有没有办法只删除sdf中出现的7/8(或任何其他)的数量?更具体地说,在这个例子中,我希望最后得到一个nsdf,它包含相同的数据,但少了一个7和一个8。

exceptAll 差集

如何从PySpark数据帧中减去N个特定行?

Data Setup

# 原始
df = spark.createDataFrame([(7,), (8,), (7,), (8,)], ("col1", ))


# 待删除列
df1 = spark.createDataFrame([(7,), (8,)], ("col1", ))

# exceptAll删除
df.exceptAll(df1).show()

# 结果
+----+
|col1|
+----+
|   7|
|   8|
+----+

PySpark︱DataFrame操作指南:增/删/改/查/合并/统计与数据处理_zuoseve01的博客-CSDN博客_pyspark在进行dataframe处理时如何删除指定行

PySpark 之 连接变换 union、intersection、subtract、cartesian_G_scsd的博客-CSDN博客 

你可能感兴趣的:(Hive,&,Sql,&,Spark,spark,大数据,分布式)