gpt4 book ai didi

spark-dataframe - 如何在每个执行器节点收集 Spark 数据帧?

转载 作者:行者123 更新时间:2023-12-01 22:53:05 25 4
gpt4 key购买 nike

我的应用程序读取一个大的 Parquet 文件并执行一些数据提取以获得一个小的 spark 数据帧对象。此数据帧的所有内容必须存在于每个执行器节点上,以用于下一阶段的计算。我知道我可以通过收集广播来做到这一点,就像在这个 pyspark 片段中一样

sc = pyspark.SparkContext()
sqlc = HiveContext(sc)

# --- register hive tables and generate spark dataframe
spark_df = sqlc.sql('sql statement')

# collect spark dataframe contents into a Pandas dataframe at the driver
global_df = spark_df.toPandas()

# broadcast Pandas dataframe to all the executor nodes
sc.broadcast(global_df)

我只是想知道:有没有更有效的方法来做到这一点?这种模式似乎使驱动程序节点成为瓶颈。

最佳答案

这取决于您需要对小数据框做什么。如果您需要将其与大数据帧合并,那么 Spark 可以优化此类合并广播小数据帧。可以广播的数据帧的最大大小由 spark.sql.autoBroadcastJoinThreshold 选项配置,如文档 http://spark.apache.org/docs/latest/sql-programming-guide.html#other-configuration-options 中所述。

关于spark-dataframe - 如何在每个执行器节点收集 Spark 数据帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36732751/

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