Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 在存储为RDD元素的列表中查找唯一的元素集_Apache Spark_Pyspark - Fatal编程技术网

Apache spark 在存储为RDD元素的列表中查找唯一的元素集

Apache 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]) 如果您的意思是

我的RDD
所有_键
存储值列表:

>> 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”]