代码之家  ›  专栏  ›  技术社区  ›  Srinivas

无法访问createOrReplaceGlobalTempView创建的临时表

  •  1
  • Srinivas  · 技术社区  · 6 年前

    我的代码在电子病历中不起作用

    finalDF.createOrReplaceGlobalTempView("temp_visits")
    spark.sql(s"insert overwrite table test PARTITION (date) SELECT * from temp_visits")
    

    我得到以下异常

    Exception in thread "main" org.apache.spark.sql.AnalysisException: Table or view not found: temp_visits; line 1 pos 100
        at org.apache.spark.sql.catalyst.analysis.package$AnalysisErrorAt.failAnalysis(package.scala:42)
        at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$.org$apache$spark$sql$catalyst$analysis$Analyzer$ResolveRelations$$lookupTableFromCatalog(Analyzer.scala:663)
    

    是否需要添加任何设置才能识别此临时表?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Vikas Kushwaha    6 年前

    需要在引用的全局视图中添加数据库名称。
    默认Spark设置具有数据库名称-全局温度

    finalDF.createOrReplaceGlobalTempView("temp_visits")
    spark.sql(s"insert overwrite table test PARTITION (date) SELECT * from global_temp.temp_visits")
    

    您可以通过在SparkSession初始化期间提供配置来更改此名称-

    spark.sql.globalTempDatabase数据库