如何使用 pyspark python 从文本文件中删除重复数字

How to remove duplicate numbers from text file using pyspark python

我正在尝试使用 pyspark python 从文本文件中删除重复数字,但该操作仅适用于行。 例如我的文本文件是:

3  
66  
4  
9  
3  
23 

下面是我试过的代码:

import pyspark
from pyspark import SparkContext, SparkConf
from collections import OrderedDict
sc = SparkContext.getOrCreate()
data = sc.textfile('file.txt')
new_data = data.map(lambda x: list(OrderedDict.fromkeys(x)))
new_data.collect()

我得到的输出是: [['3'], ['6'], ['4'], ['9'], ['3'],['2','3']]

但我想要: [3, 66, 4, 9, 23]

您正在将字典函数映射到所有条目,这将 return 一个包含集合的条目的 RDD。

要简单地获取数据框的唯一行,请使用 distinct()

import pyspark
from pyspark.sql import SparkSession

spark = SparkSession.builder\
       .master("local")\
       .appName("Unique Example")\
       .getOrCreate()

df = spark.read.text("file.txt")
df.distinct().show()

请注意,与使用 RDD 的代码相比,它使用 SparkSQL DataFrame API,这是大多数操作的首选操作模式,RDD 也具有 distinct 函数

我假设,您正在读取一个文本文件,其中包含一个只有数字的单列数据,如您所示。这里有一些可能的解决方案。

1.Removing 重复

from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()

df = spark.read.text("file.txt").drop_duplicates()
df.show()

2.If 您想要定位文本文件的特定列位置,为该位置创建一个新列并应用相同的过程。

from pyspark.sql import SparkSession
from pyspark.sql.functions import *
spark = SparkSession.builder.getOrCreate()

df = df.withColumn("col1", col('value').substr(starting_position, length))
df.select("col1").drop_duplicates().show()