Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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
Apache spark 拼花地板和Spark中的分割策略_Apache Spark_Parquet - Fatal编程技术网

Apache spark 拼花地板和Spark中的分割策略

Apache spark 拼花地板和Spark中的分割策略,apache-spark,parquet,Apache Spark,Parquet,我有一个工作,读取csv文件,将其转换为数据帧,并在拼花地板中写入。在拼花地板中写入数据时,我正在使用附加模式。使用这种方法,在每次写入中都会生成一个单独的拼花文件。我的问题是: 1) 如果每次我将数据写入拼花地板模式时,都会得到一个新文件 附加,它是否会影响读取性能(如现在的数据一样) 分布在不同长度的分区拼花地板文件中) 2) 是否有一种方法可以完全基于 数据的大小 3) 我们需要考虑一个定制的分区策略来实现吗 第二点? 我正在使用Spark 2.3 如果 在这种情况下,Spark需要

我有一个工作,读取csv文件,将其转换为数据帧,并在拼花地板中写入。在拼花地板中写入数据时,我正在使用附加模式。使用这种方法,在每次写入中都会生成一个单独的拼花文件。我的问题是:

  • 1) 如果每次我将数据写入拼花地板模式时,都会得到一个新文件 附加,它是否会影响读取性能(如现在的数据一样) 分布在不同长度的分区拼花地板文件中)
  • 2) 是否有一种方法可以完全基于 数据的大小
  • 3) 我们需要考虑一个定制的分区策略来实现吗 第二点? 我正在使用Spark 2.3
  • 如果

    在这种情况下,Spark需要访问每个文件并从中获取模式 它

    在其他情况下,我相信它对读取性能影响不大

  • 无法纯粹根据数据大小生成。你可以用
    重新分区
    合并
    。后者将造成产出不平衡 文件,但性能很好

    此外,您还有config
    spark.sql.files.maxRecordsPerFile
    或选项
    maxRecordsPerFile
    以防止文件过大,但通常是这样 这不是问题

  • 是的,我认为Spark没有内置API来按数据均匀分布 尺寸。有 这可能会有所帮助


  • 我可能有一个场景,其中添加了很少的记录,在这种情况下,如果我使用append write模式,它将使用很少的数据创建一个新分区。如果我使用重新分区或合并,我必须读取整个拼花地板数据,然后使用合并来合并分区,删除所有旧分区,然后存储这个新的重新分区的数据帧。这样对吗?