gpt4 book ai didi

apache-spark - PySpark 中的内存高效笛卡尔连接

转载 作者:行者123 更新时间:2023-12-04 22:42:30 24 4
gpt4 key购买 nike

我有一个很大的字符串 ID 数据集,可以放入我的 spark 集群中单个节点的内存中。问题是它消耗了单个节点的大部分内存。

这些 ID 大约有 30 个字符长。例如:

ids
O2LWk4MAbcrOCWo3IVM0GInelSXfcG
HbDckDXCye20kwu0gfeGpLGWnJ2yif
o43xSMBUJLOKDxkYEQbAEWk4aPQHkm

我正在寻找写入文件的所有 id 对的列表。例如:
id1,id2
O2LWk4MAbcrOCWo3IVM0GInelSXfcG,HbDckDXCye20kwu0gfeGpLGWnJ2yif
O2LWk4MAbcrOCWo3IVM0GInelSXfcG,o43xSMBUJLOKDxkYEQbAEWk4aPQHkm
HbDckDXCye20kwu0gfeGpLGWnJ2yif,O2LWk4MAbcrOCWo3IVM0GInelSXfcG
# etc...

所以我需要交叉加入数据集本身。我希望使用 10 节点集群在 PySpark 上执行此操作,但它需要具有内存效率。

最佳答案

pySpark 将轻松处理您的数据集并提高内存效率,但处理 10^8 * 10^8 条记录(这是交叉连接结果的估计大小)需要时间。查看示例代码:

from pyspark.sql.types import *
df = spark.read.csv('input.csv', header=True, schema=StructType([StructField('id', StringType())]))
df.withColumnRenamed('id', 'id1').crossJoin(df.withColumnRenamed('id', 'id2')).show()

关于apache-spark - PySpark 中的内存高效笛卡尔连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42069991/

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