Apache spark 为什么要创建这么多拼花文件?我们可以不限制拼花输出文件吗?

Apache spark 为什么要创建这么多拼花文件?我们可以不限制拼花输出文件吗?,apache-spark,apache-spark-sql,apache-spark-mllib,parquet,Apache Spark,Apache Spark Sql,Apache Spark Mllib,Parquet,为什么在sparkSql中创建了这么多拼花文件?我们可以不限制拼花输出文件吗?通常,当您写入拼花时,它会在每个分区中写入一个(或多个,具体取决于各种选项)文件。如果要减少文件数量,可以在写入之前在数据帧上调用coalesce。e、 g: df.coalesce(20).write.parquet(filepath) 当然,如果您有各种选项(例如partitionBy),文件的数量可能会急剧增加 还请注意,如果合并到非常少的分区,这可能会变得非常慢(既因为在分区之间复制数据,也因为如果合并到足够

为什么在sparkSql中创建了这么多拼花文件?我们可以不限制拼花输出文件吗?

通常,当您写入拼花时,它会在每个分区中写入一个(或多个,具体取决于各种选项)文件。如果要减少文件数量,可以在写入之前在数据帧上调用coalesce。e、 g:

df.coalesce(20).write.parquet(filepath)
当然,如果您有各种选项(例如partitionBy),文件的数量可能会急剧增加

还请注意,如果合并到非常少的分区,这可能会变得非常慢(既因为在分区之间复制数据,也因为如果合并到足够小的分区,并行度会降低)。如果单个分区中的数据太大(当合并分区时,数据自然会变大),也可能会出现OOM错误

有几件事需要注意:

  • 自版本1.4.0以来,已取消对SaveAspQuetFile的访问权限。改为使用write.parquet(路径)
  • 根据您的用例,在拼花地板文件中搜索特定字符串可能不是最有效的方法

通常,当您写入拼花地板时,它会在每个分区中写入一个(或多个,具体取决于各种选项)文件。如果要减少文件数量,可以在写入之前在数据帧上调用coalesce。e、 g:

df.coalesce(20).write.parquet(filepath)
当然,如果您有各种选项(例如partitionBy),文件的数量可能会急剧增加

还请注意,如果合并到非常少的分区,这可能会变得非常慢(既因为在分区之间复制数据,也因为如果合并到足够小的分区,并行度会降低)。如果单个分区中的数据太大(当合并分区时,数据自然会变大),也可能会出现OOM错误

有几件事需要注意:

  • 自版本1.4.0以来,已取消对SaveAspQuetFile的访问权限。改为使用write.parquet(路径)
  • 根据您的用例,在拼花地板文件中搜索特定字符串可能不是最有效的方法

请更好地解释您的问题。你是如何创建这些文件的?请提供完整的最小可验证示例:。另外,请解释你到底想做什么?为什么文件数量有问题?这里有进球号码吗?也许问题出在其他方面()谢谢你的回复,我已经用spark 1.6编写了ETL作业,我们希望存储翻译数据。我们的要求非常简单,我们希望从这个拼花文件中搜索字符串(大小约超过200GB,snappy)。在编写时,我们使用以下代码:test.saveAspQuetFile(locationfile);通过使用此方法,拼花地板可以创建大量文件,如果我们有大量文件,则很容易理解,因此随着IO的增加,搜索将花费时间。我们需要执行一些优化技术,以便我们的搜索能够更好地执行。请更好地解释您的问题。你是如何创建这些文件的?请提供完整的最小可验证示例:。另外,请解释你到底想做什么?为什么文件数量有问题?这里有进球号码吗?也许问题出在其他方面()谢谢你的回复,我已经用spark 1.6编写了ETL作业,我们希望存储翻译数据。我们的要求非常简单,我们希望从这个拼花文件中搜索字符串(大小约超过200GB,snappy)。在编写时,我们使用以下代码:test.saveAspQuetFile(locationfile);通过使用此方法,拼花地板可以创建大量文件,如果我们有大量文件,则很容易理解,因此随着IO的增加,搜索将花费时间。我们需要执行一些优化技术,以便我们的搜索可以执行得更好。有人能告诉我使用SparkSql编写拼花文件时默认的原始组大小吗?有人能告诉我使用SparkSql编写拼花文件时默认的原始组大小吗?