【发布时间】:2016-04-20 02:26:42
【问题描述】:
我的应用程序读取一个大型 parquet 文件并执行一些数据提取以得到一个较小的 spark 数据框对象。该数据帧的所有内容必须出现在每个执行程序节点上,以用于下一阶段的计算。我知道我可以通过收集广播来做到这一点,就像在这个 pyspark sn-p 中一样
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-dataframe