首页 > 解决方案 > 如何在地图函数中使用 SparkSession?

问题描述

我正在使用 spark-sql-2.4.1v。我有一个场景,我需要在地图函数中创建一个 tempTableOrView。

sparkSession  = //create a sparkSession


Dataset<?> unionDs  =//create an empty  

countriesListDs.map( country -> {
  String tableName  = "table_" + country ;
   sparkSession.createTempTableOrView(tableName  );

   resultDs  = //do aggregations on this table 

     unionDs  =  unionDs.union(resultDs)  

sparkSession.catalog.dropTable(tableName  )

);

unionDs.writeToFile;

是否可以访问 map 函数中的 sparkSession ?

请给我建议

标签: apache-sparkapache-spark-sql

解决方案


是否可以访问 map 函数中的 sparkSession ?

不,这是不可能的(并且没有任何意义,因为他们要描述分布式计算而不是其中的一部分)。

SparkSession 与 SparkContext 一样,仅在驱动程序上可用,而map在执行程序上工作。

我需要在地图函数中创建一个 tempTableOrView。

里面map?不可能(并且没有多大意义,因为它是基于行的)。

你应该map然后createOrReplaceTempView


推荐阅读