Spark AnalysisException 全局 table 或未找到视图
Spark AnalysisException global table or view not found
我收到以下错误:
18/03/14 15:31:11 ERROR ApplicationMaster: User class threw exception:
org.apache.spark.sql.AnalysisException: Table or view not found:
products; line 1 pos 42
这是我的代码:
val spark = SparkSession
.builder()
.appName("Test")
.getOrCreate()
val products = spark.read.parquet(productsPath)
products.createGlobalTempView("products")
val q1 = spark.sql("SELECT PERCENTILE(product_price, 0.25) FROM products").map(_.getAs[Double](0)).collect.apply(0)
我做错了什么?
是否可以在不使用 sql
的情况下在 Spark 中做同样的事情?
所有全局临时视图都在 Spark 保留的临时 global_temp
数据库中创建。
以下应该有效-
val q1 = spark.sql("""SELECT PERCENTILE(product_price, 0.25)
FROM global_temp.products""").map(_.getAs[Double](0)).collect.apply(0)
Spark 有 2 种不同类型的视图,Tempview
和 globalTempView
,请参阅 post 了解更多详情。
临时视图
只需将 createOrReplaceTempView
用作
products.createOrReplaceTempView("products")
val q1 = spark.sql("SELECT PERCENTILE(product_price, 0.25) FROM products").map(_.getAs[Double](0)).collect.apply(0)
全局临时视图
如果你使用 global temp view 那么你应该使用
products.createGlobalTempView("products")
val q1 = spark.sql("SELECT PERCENTILE(product_price, 0.25) FROM global_temp.products").map(_.getAs[Double](0)).collect.apply(0)
如果你想用sqlAPI你可以试试
import org.apache.spark.sql.expressions.Window
val wdw = Window.partitionBy($"Field1", $"Field2").orderBy($"Field".asc)
products.withColumn("percentile",functions.ntile(100).over(wdw))
我收到以下错误:
18/03/14 15:31:11 ERROR ApplicationMaster: User class threw exception: org.apache.spark.sql.AnalysisException: Table or view not found: products; line 1 pos 42
这是我的代码:
val spark = SparkSession
.builder()
.appName("Test")
.getOrCreate()
val products = spark.read.parquet(productsPath)
products.createGlobalTempView("products")
val q1 = spark.sql("SELECT PERCENTILE(product_price, 0.25) FROM products").map(_.getAs[Double](0)).collect.apply(0)
我做错了什么?
是否可以在不使用 sql
的情况下在 Spark 中做同样的事情?
所有全局临时视图都在 Spark 保留的临时 global_temp
数据库中创建。
以下应该有效-
val q1 = spark.sql("""SELECT PERCENTILE(product_price, 0.25)
FROM global_temp.products""").map(_.getAs[Double](0)).collect.apply(0)
Spark 有 2 种不同类型的视图,Tempview
和 globalTempView
,请参阅 post
临时视图
只需将 createOrReplaceTempView
用作
products.createOrReplaceTempView("products")
val q1 = spark.sql("SELECT PERCENTILE(product_price, 0.25) FROM products").map(_.getAs[Double](0)).collect.apply(0)
全局临时视图
如果你使用 global temp view 那么你应该使用
products.createGlobalTempView("products")
val q1 = spark.sql("SELECT PERCENTILE(product_price, 0.25) FROM global_temp.products").map(_.getAs[Double](0)).collect.apply(0)
如果你想用sqlAPI你可以试试
import org.apache.spark.sql.expressions.Window
val wdw = Window.partitionBy($"Field1", $"Field2").orderBy($"Field".asc)
products.withColumn("percentile",functions.ntile(100).over(wdw))