Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.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
将字典另存为pyspark数据帧并加载它-Python,dataricks_Python_Pandas_Dictionary_Pyspark_Databricks - Fatal编程技术网

将字典另存为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)
    

  • 将Pandas数据帧转换为PySpark数据帧

    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')
    

  • 将上面保存的文件作为PySpark数据帧加载

    df2 = spark.read.format("parquet").load('/data/tmp/my_df')
    

  • 将PySpark数据帧转换为字典

    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)
    

  • 将Pandas数据帧转换为PySpark数据帧

    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')
    

  • 将上面保存的文件作为PySpark数据帧加载

    df2 = spark.read.format("parquet").load('/data/tmp/my_df')
    

  • 将PySpark数据帧转换为字典

    my_dict2 = df2.toPandas().to_dict()
    

  • 上述代码的计算成本取决于实际数据集的内存使用情况