如何确定 PySpark 数据帧分区的“首选位置”?

abeboparebop

我试图了解如何coalesce确定如何将初始分区连接到最终问题中,显然“首选位置”与此有关。

根据这个问题,Scala Spark 有一个函数preferredLocations(split: Partition)可以识别这个。但我对 Spark 的 Scala 方面一点也不熟悉。有没有办法在 PySpark 级别确定给定行或分区 ID 的首选位置?

阿尔珀 t。特克

是的,理论上是可以的。强制某种形式的偏好的示例数据(可能有一个更简单的示例):

rdd1 = sc.range(10).map(lambda x: (x % 4, None)).partitionBy(8)
rdd2 = sc.range(10).map(lambda x: (x % 4, None)).partitionBy(8)

# Force caching so downstream plan has preferences
rdd1.cache().count()

rdd3 = rdd1.union(rdd2)

现在你可以定义一个助手:

from pyspark import SparkContext

def prefered_locations(rdd):
    def to_py_generator(xs):
        """Convert Scala List to Python generator"""
        j_iter = xs.iterator()
        while j_iter.hasNext():
            yield j_iter.next()

    # Get JVM
    jvm =  SparkContext._active_spark_context._jvm
    # Get Scala RDD
    srdd = jvm.org.apache.spark.api.java.JavaRDD.toRDD(rdd._jrdd)
    # Get partitions
    partitions = srdd.partitions()
    return {
        p.index(): list(to_py_generator(srdd.preferredLocations(p)))
        for p in partitions
    }

应用:

prefered_locations(rdd3)

# {0: ['...'],
#  1: ['...'],
#  2: ['...'],
#  3: ['...'],
#  4: [],
#  5: [],
#  6: [],
#  7: []}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在适当的地方增加PySpark数据帧的分区?

来自分类Dev

如何过滤pyspark数据帧

来自分类Dev

使用PySpark将数据帧写入镶木地板时如何指定分区号

来自分类Dev

如何在pyspark数据帧读取方法中包括分区列

来自分类Dev

使用PySpark将数据帧写入地板时如何指定分区号

来自分类Dev

在 pyspark 数据帧中读取 Hive 分区 ORC 表时,逻辑和物理计划如何工作

来自分类Dev

如何确定Apache Spark数据帧中的分区大小

来自分类Dev

如何在pyspark中转置数据帧?

来自分类Dev

如何从 PySpark 中的 RDD 创建数据帧?

来自分类Dev

如何从pyspark rdd或分区确定原始的s3输入文件名

来自分类Dev

如何从pyspark rdd或分区确定原始的s3输入文件名

来自分类Dev

通过Pyspark数据帧的多列重新分区

来自分类Dev

将PySpark数据帧写入分区的Hive表

来自分类Dev

如何使用pyspark dataframe查找std dev分区或分组的数据?

来自分类Dev

如何在pyspark数据帧中创建嵌套字典

来自分类Dev

如何在限制行数的同时拆分Pyspark数据帧?

来自分类Dev

如何在pyspark中将密集向量转换为数据帧?

来自分类Dev

pyspark:如何获取spark数据帧的Spark SQLContext?

来自分类Dev

如何对Pyspark数据帧中的密钥组执行SCAN操作

来自分类Dev

如何比较PySpark中两个数据帧的计数?

来自分类Dev

如何在pyspark数据帧上使用forEachPartition?

来自分类Dev

如何计算pyspark数据帧中值的条件概率?

来自分类Dev

如何根据pyspark数据帧中的条件转换日期格式?

来自分类Dev

如何在pyspark中将嵌套字典转换为数据帧?

来自分类Dev

如何从Pyspark中的spark数据帧创建边缘列表?

来自分类Dev

如何在pyspark数据帧中进行分组而不聚集

来自分类Dev

如何有效地合并 PySpark 数据帧?

来自分类Dev

如何确定命令位置?

来自分类Dev

Pyspark 数据帧重新分区将所有数据放在一个分区中

Related 相关文章

  1. 1

    如何在适当的地方增加PySpark数据帧的分区?

  2. 2

    如何过滤pyspark数据帧

  3. 3

    使用PySpark将数据帧写入镶木地板时如何指定分区号

  4. 4

    如何在pyspark数据帧读取方法中包括分区列

  5. 5

    使用PySpark将数据帧写入地板时如何指定分区号

  6. 6

    在 pyspark 数据帧中读取 Hive 分区 ORC 表时,逻辑和物理计划如何工作

  7. 7

    如何确定Apache Spark数据帧中的分区大小

  8. 8

    如何在pyspark中转置数据帧?

  9. 9

    如何从 PySpark 中的 RDD 创建数据帧?

  10. 10

    如何从pyspark rdd或分区确定原始的s3输入文件名

  11. 11

    如何从pyspark rdd或分区确定原始的s3输入文件名

  12. 12

    通过Pyspark数据帧的多列重新分区

  13. 13

    将PySpark数据帧写入分区的Hive表

  14. 14

    如何使用pyspark dataframe查找std dev分区或分组的数据?

  15. 15

    如何在pyspark数据帧中创建嵌套字典

  16. 16

    如何在限制行数的同时拆分Pyspark数据帧?

  17. 17

    如何在pyspark中将密集向量转换为数据帧?

  18. 18

    pyspark:如何获取spark数据帧的Spark SQLContext?

  19. 19

    如何对Pyspark数据帧中的密钥组执行SCAN操作

  20. 20

    如何比较PySpark中两个数据帧的计数?

  21. 21

    如何在pyspark数据帧上使用forEachPartition?

  22. 22

    如何计算pyspark数据帧中值的条件概率?

  23. 23

    如何根据pyspark数据帧中的条件转换日期格式?

  24. 24

    如何在pyspark中将嵌套字典转换为数据帧?

  25. 25

    如何从Pyspark中的spark数据帧创建边缘列表?

  26. 26

    如何在pyspark数据帧中进行分组而不聚集

  27. 27

    如何有效地合并 PySpark 数据帧?

  28. 28

    如何确定命令位置?

  29. 29

    Pyspark 数据帧重新分区将所有数据放在一个分区中

热门标签

归档