如何在SparkSession中注册DataFrame为表并通过spark.table获取?
将DataFrame注册为SparkSession中的表
要把salaryDF注册成名为"salaries"的表,方便用spark.table("salaries")获取,有以下几种常用方法:
1. 最常用:创建或替换临时视图
如果目标表名已存在,会直接替换;不存在则创建。这是日常开发中最常用的方式,视图仅在当前SparkSession内有效,会话结束后自动销毁:
salaryDF.createOrReplaceTempView("salaries")
2. 创建临时视图(不允许替换)
如果"salaries"视图已经存在,执行这个方法会抛出错误,适合需要确保视图未被创建过的场景:
salaryDF.createTempView("salaries")
3. 创建全局临时视图
这种视图属于全局范围,所有SparkSession都能访问,直到整个Spark应用停止才会被清除。获取时需要加上global_temp前缀:
salaryDF.createGlobalTempView("salaries") // 获取全局临时视图 val salaryDataframeFromSession = spark.table("global_temp.salaries")
内容的提问来源于stack exchange,提问作者219CID
相关产品推荐
相关产品推荐

