0

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

解决此问题的一种方法是:

  1. 我创建一个 tempView
  2. 选择所需的列
  3. 使用forEach转换DataFrameMap.
  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

4

1 回答 1

1

您可以广播 DataFrame。查看文档

于 2018-12-18T06:28:40.653 回答