当前位置: 首页 > 面试题库 >

如何在保存DataFrame时避免生成crc文件和SUCCESS文件?

贝德辉
2023-03-14
问题内容

我正在使用以下代码将Spark DataFrame保存到JSON文件

unzipJSON.write.mode("append").json("/home/eranw/Workspace/JSON/output/unCompressedJson.json")

输出结果是:

part-r-00000-704b5725-15ea-4705-b347-285a4b0e7fd8
.part-r-00000-704b5725-15ea-4705-b347-285a4b0e7fd8.crc
part-r-00001-704b5725-15ea-4705-b347-285a4b0e7fd8
.part-r-00001-704b5725-15ea-4705-b347-285a4b0e7fd8.crc
_SUCCESS
._SUCCESS.crc
  1. 如何生成单个JSON文件而不是每行一个文件?
  2. 如何避免* crc文件?
  3. 如何避免SUCCESS文件?

问题答案:

如果要单个文件,则需要coalesce在调用write之前对单个分区执行a操作,因此:

unzipJSON.coalesce(1).write.mode("append").json("/home/eranw/Workspace/JSON/output/unCompressedJson.json")

就个人而言,我觉得很烦人,输出文件的数量取决于你打电话之前有分区的数量write-特别是如果你做writepartitionBy-但据我所知,目前没有其他办法。

我不知道是否有禁用.crc文件的方法-我不知道-但是您可以通过在Spark上下文的hadoop配置上设置以下内容来禁用_SUCCESS文件。

sc.hadoopConfiguration.set("mapreduce.fileoutputcommitter.marksuccessfuljobs", "false")

请注意,您可能还希望通过以下方式禁用元数据文件的生成:

sc.hadoopConfiguration.set("parquet.enable.summary-metadata", "false")

显然,产生元数据文件需要一定的时间(见本博客文章),但实际上并没有那么重要(根据此)。就个人而言,我总是禁用它们,并且没有任何问题。



 类似资料:
  • 问题内容: 我可以在不生成编译的.pyc文件的情况下运行python解释器吗? 问题答案: 来自“ Python 2.6的新增功能- 解释器更改” : 现在,可以通过向Python解释器提供-B开关,或者通过在运行解释器之前设置 PYTHONDONTWRITEBYTECODE环境变量来阻止Python编写.pyc或.pyo文件。此设置可作为Python程序的 变量使用,并且Python代码可以更改

  • 我想把一些HTML内容转换成PDF文件。我面临的问题是HTML内容有一些标记,这些标记带有绝对图像URL。因此 是否有一种方法可以避免这种情况下的例外,并生成一个没有任何图像的pdf? 我使用的是IText-5.0.5库。

  • 我在我的项目中使用spack-sql-2.3.1v、kafka和java8。与 在消费者方面,我尝试使用下面的代码在hdfs me中编写文件 当我存储到hdfs文件夹中时,它看起来像下面的东西,即每个文件都在1.5k即几个KB。 由于这个小文件,它需要大量的处理时间,而我从hdfs中读取更大的数据集 问题: > 如果我想计算给定hdfs文件夹中的记录总数,如何计算? 新更改后 运行成功结果包括:

  • 通过日志收集系统将分散在数百台服务器上的数据集中存储在某中心服务器上,这是运维最原始的需求。早年的 scribed ,甚至直接就把输出的语法命名为 <store>。Logstash 当然也能做到这点。 和 LogStash::Inputs::File 不同, LogStash::Outputs::File 里可以使用 sprintf format 格式来自动定义输出到带日期命名的路径。 配置示例

  • 问题内容: 我正在研究从文件读取大量数据的应用程序。基本上,我有一个巨大的文件(大约1.5-2个演出),其中包含不同的对象(每个文件约5至1000万个对象)。我需要阅读所有内容,并将其放置在应用程序中的不同地图上。问题是该应用程序在某些时候读取对象时内存不足。仅当我将其设置为使用- Xmx4096m时,它才能处理该文件。但是,如果文件更大,它将无法再执行此操作。 这是代码片段: 首先,我使用的是

  • 问题内容: 我在以下内容: 一切正常,但我不希望在源代码中引用文件: 是否可以改用Maven依赖项?怎么样? 问题答案: 因此,我认为您的问题的答案是:“不,实际上没有一种方法可以避免将可执行文件的路径传递给插件。” 我能建议的最接近的是这样的: 在您的pom.xml中: 然后,在构建用户的中: 现在,您可以签入pom.xml,它中没有任何特定于计算机的路径。为了执行构建,需要定义属性,因此每个开