Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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 apachespark(PySpark):对拼花地板数据进行全局排序并等分大小_Apache Spark_Amazon S3_Pyspark - Fatal编程技术网

Apache spark apachespark(PySpark):对拼花地板数据进行全局排序并等分大小

Apache spark apachespark(PySpark):对拼花地板数据进行全局排序并等分大小,apache-spark,amazon-s3,pyspark,Apache Spark,Amazon S3,Pyspark,是否可以在S3中对所有分区的拼花地板数据进行排序,并将数据另外划分为相等的分区(计算我有多少数据,并将其划分为64或128以获得相等的文件) 将所有内容排序并平均分配的原因是,在S3中有更好的压缩,并在从S3查询数据时减少Athena中的扫描次数 我尝试了以下几点: 执行重新分区df.orderBy(col1,col2).重新分区(100).write('s3://')-提供相等的分区,但是由于乱洗2次(orderBy和重新分区),排序顺序没有保持 执行orderBy然后coalescedf.o

是否可以在S3中对所有分区的拼花地板数据进行排序,并将数据另外划分为相等的分区(计算我有多少数据,并将其划分为64或128以获得相等的文件)

将所有内容排序并平均分配的原因是,在S3中有更好的压缩,并在从S3查询数据时减少Athena中的扫描次数

我尝试了以下几点:

  • 执行重新分区
    df.orderBy(col1,col2).重新分区(100).write('s3://')
    -提供相等的分区,但是由于乱洗2次(orderBy和重新分区),排序顺序没有保持
  • 执行orderBy然后coalesce
    df.orderBy(col1,col2).coalesce(100).write('s3://'))
    -保留顺序,但生成不相等的分区,有时我还需要增加spark.sql.shuffle.partitions上的分区数,coalesce不会这样做
  • 执行orderBy并依赖spark.sql.shuffle分区:
    --conf spark.sql.shuffle.partitions=100,df.orderBy(col1,col2.write('s3://'))
    -保留顺序,但输出文件不会等分
  • 解决方法:

  • 我可以进行“二次排序”,比如“
    重新分区(100).sortThinPartitions(col1,col2)
    ”,但这不是“全局”排序
  • 使用选项3并创建一个自定义分区器,以确保分区相等(但在PySpark中,使用自定义分区器有点问题)
  • 我可以考虑的另一个选项是按范围分区,然后是sortWithinPartitions。这应该会给出总体排序,但要适当地确定这些范围并不容易,因为数据可能具有不同的“风格”

  • 关于我这里缺少的内容有什么想法吗…

    只是想知道df.repartition(100).orderBy是否有效?不,它会将数据重新分区为100(大小相同),然后orderBy将生成与spark.sql.shuffle.partitions相等的文件数-至少这是我到目前为止看到的情况,只是想知道df.repartition(100).orderBy可以工作吗?不,它会将数据重新分区为100(大小相同),然后orderBy将生成与spark.sql.shuffle.partitions相等的文件数-至少这是我到目前为止看到的