Apache spark 在存储为RDD元素的列表中查找唯一的元素集
我的RDDApache spark 在存储为RDD元素的列表中查找唯一的元素集,apache-spark,pyspark,Apache Spark,Pyspark,我的RDD所有_键存储值列表: >> all_keys.take(3) [['a','b','c'], ['a','b'], ['a','d','f']] 这些值中的大多数是重复出现的,但有些列表中的值在其他列表中不存在 如何从RDD中存储的所有列表中获取唯一元素的列表?如果您的意思是删除最终列表中的重复项(示例中没有重复项) 如果您的意思是删除rdd中一个密钥的重复条目,例如“a”使用 all_keys.distinct(lambda row:row[0]) 如果您的意思是
所有_键
存储值列表:
>> all_keys.take(3)
[['a','b','c'],
['a','b'],
['a','d','f']]
这些值中的大多数是重复出现的,但有些列表中的值在其他列表中不存在
如何从RDD中存储的所有列表中获取唯一元素的列表?如果您的意思是删除最终列表中的重复项(示例中没有重复项)
如果您的意思是删除rdd中一个密钥的重复条目,例如“a”使用
all_keys.distinct(lambda row:row[0])
如果您的意思是删除最终列表中的重复项(示例中没有重复项)
如果您的意思是删除rdd中一个密钥的重复条目,例如“a”使用
all_keys.distinct(lambda row:row[0])
您需要将RDD平面映射,以将其从字符串列表的RDD转换为字符串的RDD。然后,您可以使用
distinct()
方法仅返回唯一的字符串
创建数据
all_keys = [['category', 'ser_id', 'appname', 'timestamp', 'label', 'ser_token', 'appver', 'action'],
['category', 'ser_id', 'appname', 'timestamp', 'vale', 'label', 'ser_token', 'appver', 'action', 'type'],
['category', 'ser_id', 'appname', 'timestamp', 'vale', 'label', 'ser_token', 'appver', 'type' ]]
rdd = sc.parallelize(all_keys)
定义平面图函数
def explode(row):
for k in row:
yield k
平面图,获取不同元素,收集
rdd.flatMap(explode).distinct().collect()
结果
[“类别”,
“ser_id”,
“类型”,
“行动”,
“时间戳”,
“ser_令牌”,
“appver”,
“淡水河谷”,
“标签”,
“appname”]
您需要将RDD平面映射,以将其从字符串列表的RDD转换为字符串的RDD。然后,您可以使用
distinct()
方法仅返回唯一的字符串
创建数据
all_keys = [['category', 'ser_id', 'appname', 'timestamp', 'label', 'ser_token', 'appver', 'action'],
['category', 'ser_id', 'appname', 'timestamp', 'vale', 'label', 'ser_token', 'appver', 'action', 'type'],
['category', 'ser_id', 'appname', 'timestamp', 'vale', 'label', 'ser_token', 'appver', 'type' ]]
rdd = sc.parallelize(all_keys)
定义平面图函数
def explode(row):
for k in row:
yield k
平面图,获取不同元素,收集
rdd.flatMap(explode).distinct().collect()
结果
[“类别”,
“ser_id”,
“类型”,
“行动”,
“时间戳”,
“ser_令牌”,
“appver”,
“淡水河谷”,
“标签”,
“appname”]