当前位置: 首页 > 知识库问答 >
问题:

pyspark数据帧写入具有特定名称的单个json文件

盖辉
2023-03-14

我有一个数据框架,我想将其编写为具有特定名称的单个json文件。我在下面试过了

df2 = df1.select(df1.col1,df1.col2)
df2.write.format('json').save('/path/file_name.json') # didnt work, writing in folder 'file_name.json' and files with part-XXX
df2.toJSON().saveAsTextFile('/path/file_name.json')  # didnt work, writing in folder 'file_name.json' and files with part-XXX

感谢有人能提供解决方案。

共有3个答案

东方吕恭
2023-03-14

Pyspark将文件存储在较小的块中,据我所知,我们不能用一个给定的文件名直接存储JSON。我认为这个小python函数将有助于您尝试实现的目标。

def saveResult (data_frame, temp_location, file_path):
    data_frame.write.mode('append').json(temp_location)
    file = dbutils.fs.ls(temp_location)[-1].path # last file is the json or can also use regex to determine this
    dbutils.fs.cp(file, file_path)
    dbutils.fs.rm(temp_location, recurse=True)

基本上,这里发生的事情是您正在传递数据帧、存储所有文件块的temp_location以及您希望作为输出文件获取的完整文件路径(文件路径文件名)。该函数生成块,删除所有块,并将最终文件保存到具有所需文件名的所需位置。

华化
2023-03-14

您可以通过之前转换为熊猫df来完成此操作:

df.toPandas().to_json('path/file_name.json', orient='records', force_ascii=False, lines=True)
宗政洋
2023-03-14

您需要使用以下代码将其保存在单个文件中:-

df2 = df1.select(df1.col1,df1.col2)
df2.coalesce(1).write.format('json').save('/path/file_name.json')

这将创建一个名为file\u的文件夹。json。选中此文件夹,您可以获得包含完整数据的单个文件

 类似资料:
  • 我想将一个数据帧保存到两个不同的csv文件中(拆分数据帧)-一个文件只包含标题,另一个文件包含其余行。 我想将这两个文件保存在同一个目录下,这样Spark处理所有逻辑将是最好的选择,如果可能的话,而不是使用pandas分割csv文件。 最有效的方法是什么? 谢谢你的帮助!

  • 我试图做一些非常简单的事情,我有一些非常愚蠢的挣扎。我想这一定与对火花的基本误解有关。我非常感谢任何帮助或解释。 我有一张非常大的桌子(~3 TB,~300毫米行,25k个分区),在s3中保存为拼花地板,我想给一些人一个很小的拼花文件样本。不幸的是,这要花很长时间才能完成,我不明白为什么。我尝试了以下方法: 然后当这不起作用时,我尝试了这个,我认为应该是一样的,但我不确定。(我添加了,以尝试调试。

  • 我正在编写一个脚本,将带有标头的大. xlsx文件减少到CSV中,然后根据标头名称编写一个新的CSV文件,其中仅包含所需的列。 我得到的错误是最后一段代码,它说 我肯定我忽略了一些愚蠢的东西,但是我已经阅读了熊猫网站上的留档,我仍然不知所措。我知道我误用了to_csv参数,但我似乎无法理解留档。 任何帮助都是赞赏的,谢谢!

  • 我有一个Spark(2.4)数据帧,我想将其编写为管道分隔文件。应该是很简单的 我在中得到一个文件。 到目前为止,一切顺利。但我实际上希望文件名是特定的,例如,tmp/myDF。csv 但是在save中输入这个字符串只会创建一个名为myDF的dir。csv并创建零件*。csv文件。 有没有办法用一个特定的名称来编写数据帧?

  • 我正在尝试创建一个dataframe new\u df,并使用pyspark将数据帧加载到Kafka。然而,我很少有例外。不知道到底是什么问题。任何帮助都将不胜感激。 现在我正试图将数据框架与Kafka主题联系起来 异常(从错误中选取): 完全错误: Py4JJavaError:调用o1811时出错。保存:组织。阿帕奇。火花SparkException:作业因阶段失败而中止:阶段76.0中的任务8

  • 如何将数据帧中的数据写入到单个。拼花地板文件(两个数据 df.rdd.get1个分区 1个 如果我使用上述命令在HDFS中创建拼花文件,它将在HDFS中创建目录“payloads.parquet”,并在该目录中创建多个文件。拼花地板文件,元数据文件正在保存。 找到4项 如何将数据帧中的数据写入单个文件(两个数据 帮助将不胜感激。