以下是一些转换为RDD的示例数据:
my_data = [{'id': '001', 'name': 'Sam', 'class': "classA", 'age': 15, 'exam_score': '90'},
{'id': '002', 'name': 'Tom', 'class': "classA", 'age': 15, 'exam_score': '78'},
{'id': '003', 'name': 'Ben', 'class': "classB", 'age': 16, 'exam_score': '91'},
{'id': '004', 'name': 'Max', 'class': "classB", 'age': 16, 'exam_score': '76'},
{'id': '005', 'name': 'Ana', 'class': "classA", 'age': 15, 'exam_score': '88'},
{'id': '006', 'name': 'Ivy', 'class': "classA", 'age': 16, 'exam_score': '77'},
{'id': '007', 'name': 'Eva', 'class': "classB", 'age': 15, 'exam_score': '86'},
{'id': '008', 'name': 'Zoe', 'class': "classB", 'age': 16, 'exam_score': '89'}]
my_rdd = sc.parallelize(my_data)
仅运行my_rdd
就会返回:
#>>> ParallelCollectionRDD[117] at readRDDFromFile at PythonRDD.scala:274
我知道你可以用my_rdd.collect()
来显示RDD,它返回:
#[{'age': 15,
# 'class': 'classA',
# 'exam_score': '90',
# 'id': '001',
# 'name': 'Sam'},
# {'age': 15,
# 'class': 'classA',
# 'exam_score': '78',
# 'id': '002',
# 'name': 'Tom'}, ...]
我发现我可以通过运行my_rdd.keys()
来访问密钥,但这将返回:
#>>> PythonRDD[121] at RDD at PythonRDD.scala:53
我想返回RDD中所有不同键的列表(我知道每行的键都是相同的,但我想知道它们不同的场景)-因此如下所示:
#>>> ['id', 'name', 'class', 'age', 'exam_score']
因此,我假设我可以通过运行my_rdd.keys().distinct.collect()
得到这个结果,但是我得到了一个错误.
我还在学习PYSSPARK,如果有人能提供一些意见,我将不胜感激:)