在 Apache Spark 中的执行器之间共享数据



我的SPARK项目(用Java编写)需要跨执行程序访问(选择查询结果)不同的表。

这个问题的一个解决方案是:

  1. 我创建一个临时视图
  2. 选择必填列
  3. 使用forEachDataFrame转换为Map
  4. 将该映射作为广播变量跨执行程序传递。

但是,我发现

  1. 有许多复杂的查询,其结果不能直接存储在Map
  2. 表非常大,因此创建较大的Map并将其作为广播变量传递给执行程序听起来效率不高。

相反,我们是否可以使用可以在执行程序之间共享的load在内存中加载表?

void org.apache.spark.sql.Dataset.createOrReplaceTempView(String viewName)

void org.apache.spark.sql.Dataset.createGlobalTempView(String viewName) throws AnalysisException

方法对这个目的有用吗?

火花版本 : 2.3.0

您可以广播数据帧。请参阅文档

相关内容

  • 没有找到相关文章

最新更新