如何使用 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()
我正在尝试使用 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()