将字典另存为pyspark数据帧并加载它-Python,dataricks
我有一本字典如下:将字典另存为pyspark数据帧并加载它-Python,dataricks,python,pandas,dictionary,pyspark,databricks,Python,Pandas,Dictionary,Pyspark,Databricks,我有一本字典如下: my_dict = {'a':[12,15.2,52.1],'b':[2.5,2.4,5.2],'c':[1.2,5.3,12]} 我想把这本词典保存在Databricks中,这样我就不会每次开始使用它时都能得到它。此外,我想知道如何检索它,并将其恢复为原始形式 我尝试了以下几点: from itertools import zip_longest column_names, data = zip(*my_dict.items()) spark.createDataFr
my_dict = {'a':[12,15.2,52.1],'b':[2.5,2.4,5.2],'c':[1.2,5.3,12]}
我想把这本词典保存在Databricks中,这样我就不会每次开始使用它时都能得到它。此外,我想知道如何检索它,并将其恢复为原始形式
我尝试了以下几点:
from itertools import zip_longest
column_names, data = zip(*my_dict.items())
spark.createDataFrame(zip_longest(*data), column_names).show()
及
但是,我得到以下错误:
zip#U最长参数#10342必须支持迭代
我也不知道如何重新加载或上传它。我尝试了一个示例数据帧(不是同一个),如下所示:
df.write.format("tfrecords").mode("overwrite").save('/data/tmp/my_df')
错误是:
属性名称“my_column”包含无效字符
在“,;{}()\n\t=”之间。请使用别名重命名它
最后,为了得到它,我想:
my_df = spark.table("my_df") # Get table
df = my_df.toPandas() # Make pd dataframe
然后把它做成一个字典,但也许有一个比把它做成一个数据框然后作为数据框检索并再次转换成字典更简单的方法
我还想知道解决方案的计算成本,因为实际数据集非常大 这是我的示例代码,用于逐步实现您的需求
my_dict = {'a':[12,15.2,52.1],'b':[2.5,2.4,5.2],'c':[1.2,5.3,12]}
import pandas as pd
pdf = pd.DataFrame(my_dict)
df = spark.createDataFrame(pdf)
my_dict = {'a':[12,15.2,52.1],'b':[2.5,2.4,5.2],'c':[1.2,5.3,12]}
import pandas as pd
pdf = pd.DataFrame(my_dict)
df = spark.createDataFrame(pdf)
parquet
格式将PySpark数据帧保存到文件。此处不支持格式tfrecords
df.write.format("parquet").mode("overwrite").save('/data/tmp/my_df')
df2 = spark.read.format("parquet").load('/data/tmp/my_df')
my_dict2 = df2.toPandas().to_dict()
上述代码的计算成本取决于实际数据集的内存使用情况。以下是我的示例代码,用于逐步实现您的需求
my_dict = {'a':[12,15.2,52.1],'b':[2.5,2.4,5.2],'c':[1.2,5.3,12]}
import pandas as pd
pdf = pd.DataFrame(my_dict)
df = spark.createDataFrame(pdf)
my_dict = {'a':[12,15.2,52.1],'b':[2.5,2.4,5.2],'c':[1.2,5.3,12]}
import pandas as pd
pdf = pd.DataFrame(my_dict)
df = spark.createDataFrame(pdf)
parquet
格式将PySpark数据帧保存到文件。此处不支持格式tfrecords
df.write.format("parquet").mode("overwrite").save('/data/tmp/my_df')
df2 = spark.read.format("parquet").load('/data/tmp/my_df')
my_dict2 = df2.toPandas().to_dict()