Dictionary 将Pyspark数据帧转换为字典
我正在尝试将Pyspark数据帧转换为字典 下面是示例CSV文件-Dictionary 将Pyspark数据帧转换为字典,dictionary,pyspark,Dictionary,Pyspark,我正在尝试将Pyspark数据帧转换为字典 下面是示例CSV文件- Col0, Col1 ----------- A153534,BDBM40705 R440060,BDBM31728 P440245,BDBM50445050 我想出了这个密码- from rdkit import Chem from pyspark import SparkContext from pyspark.conf import SparkConf from pyspark.sql import SparkSessi
Col0, Col1
-----------
A153534,BDBM40705
R440060,BDBM31728
P440245,BDBM50445050
我想出了这个密码-
from rdkit import Chem
from pyspark import SparkContext
from pyspark.conf import SparkConf
from pyspark.sql import SparkSession
sc = SparkContext.getOrCreate()
spark = SparkSession(sc)
df = spark.read.csv("gs://my-bucket/my_file.csv") # has two columns
# Creating list
to_list = map(lambda row: row.asDict(), df.collect())
#Creating dictionary
to_dict = {x['col0']: x for x in to_list }
这将创建一个如下所示的字典-
'A153534': {'col0': 'A153534', 'col1': 'BDBM40705'}, 'R440060': {'col0': 'R440060', 'col1': 'BDBM31728'}, 'P440245': {'col0': 'P440245', 'col1': 'BDBM50445050'}
但是我想要一本这样的字典-
{'A153534':'BDBM40705'},{'R440060':'BDBM31728'},{'P440245':'BDBM5044050'}
我该怎么做
我尝试了Yolo提供的rdd解决方案,但出现了错误。你能告诉我我做错了什么吗
py4j.protocol.Py4JError:调用时出错
o80.是一道屏障。Trace:py4j.Py4JException:方法isBarrier[]没有
不存在
位于py4j.reflection.ReflectionEngine.getMethodReflectionEngine.java:318
位于py4j.reflection.ReflectionEngine.getMethodReflectionEngine.java:326
在py4j.Gateway.invokeGateway.java:274
在py4j.commands.AbstractCommand.invokeMethodAbstractCommand.java:132
在py4j.commands.CallCommand.executeCallCommand.java:79
在py4j.GatewayConnection.runGatewayConnection.java:238
java:748
以下是一种使用以下工具进行操作的方法: 这可以帮助您: df=spark.read.csv'/FileStore/tables/Create_dict.txt',header=True df=df.withColumn'dict',to_jsoncreate_mapdf.Col0,df.Col1 df_list=[行['dict']表示df中的行。选择'dict'。收集] df_列表 输出为: [{A153534:BDBM40705}', “{R440060:BDBM31728}”, “{P440245:BDBM50445050}”
我想你想要{x['col0']:x['col1']对于x in to_list}我已经在答案中提供了数据帧版本。如果有帮助的话试试。嗨,约洛,我有个错误。我分享了我最初问题中的错误。你能帮我吗?你能展示一下你的数据框架的模式吗?还有你的pyspark版本
df.rdd.map(lambda x: {x.Col0: x.Col1}).collect()
[{'A153534': 'BDBM40705'}, {'R440060': 'BDBM31728'}, {'P440245': 'BDBM50445050'}]