gpt4 book ai didi

apache-spark - 使用 Spark Graphframes 进行分区

转载 作者:行者123 更新时间:2023-12-04 04:17:10 26 4
gpt4 key购买 nike

我正在使用 Spark Graphframes 处理一个较大的 (?) 图(6000 万个顶点和 95 亿条边)。基础数据并不大——顶点在磁盘上占用大约 500mb,边大约是 40gb。由于 java 堆内存不足的问题,我的容器经常关闭,但我认为根本问题是 graphframe 不断地洗牌数据(我看到洗牌读/写高达 150gb)。有没有办法有效地划分 Graphframe 或底层边/顶点以减少 shuffle?

最佳答案

这是部分解决方案/解决方法 - 创建一个模拟分区函数之一的 UDF,以在其上创建一个新列和分区。

num_parts = 256
random_vertex_cut = udf.register("random_vertex_cut", lambda src, dst: math.abs((src, dst).hashCode()) % num_parts, IntegerType())

edge.withColumn("v_cut", random_vertex_cut(col("src"), col("dst")).repartition(256, "v_cut")

这种方法可以帮助一些人,但不如 GraphX。

关于apache-spark - 使用 Spark Graphframes 进行分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41351802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com