当前位置: 首页 > 知识库问答 >
问题:

未找到Spark AnalysisException全局表或视图

唐麒
2023-03-14

我得到以下错误:

18/03/14 15:31:11错误应用程序管理员:用户类引发异常:org。阿帕奇。火花sql。分析异常:未找到表或视图:产品;第1行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)

我做错了什么?在Spark中不使用sql也可以做同样的事情吗?

共有3个答案

狄玉书
2023-03-14

所有全局临时视图都是在Spark preserved temporaryglobal_temp数据库中创建的。

下面应该有用-

val q1 = spark.sql("""SELECT PERCENTILE(product_price, 0.25) 
    FROM global_temp.products""").map(_.getAs[Double](0)).collect.apply(0)

Spark有2种不同类型的视图,TempviewglobalTempView,更多细节请参见此处的帖子。

白翔
2023-03-14

如果你想使用sql API你可以试试

import org.apache.spark.sql.expressions.Window

val wdw =  Window.partitionBy($"Field1", $"Field2").orderBy($"Field".asc)

products.withColumn("percentile",functions.ntile(100).over(wdw))
东方高洁
2023-03-14

临时视图

只需使用createOrReplaceTempViewas

products.createOrReplaceTempView("products")

val q1 = spark.sql("SELECT PERCENTILE(product_price, 0.25) FROM products").map(_.getAs[Double](0)).collect.apply(0)

全局临时视图

如果您使用全局临时视图,那么您应该这样做

products.createGlobalTempView("products")

val q1 = spark.sql("SELECT PERCENTILE(product_price, 0.25) FROM global_temp.products").map(_.getAs[Double](0)).collect.apply(0)
 类似资料:
  • Im my routes.php我有以下内容: 当我的数据库还没有表,我想进行php artisan迁移时,结果是:SQLSTATE[42S02]:找不到基表或视图:1146表“ae_dev.categories”不存在 我的迁移文件: 我认为Laravel托盘从routes.php调用类别,想做选择或某种想法,所以我想运行创建类别表的迁移,但上述错误是在... 我怎样才能解决这个问题?

  • 我正在尝试使用spark sql运行一个基本的java程序 如果有人能给我指出一些在斯巴克-sql(斯巴克-2.1.1)上可以阅读的好材料,那也太好了。我计划使用火花来实现ETL,连接到MySQL和其他数据源。 异常在线程"main"org.apache.spark.sql.分析异常:未找到表或视图:;第1行pos 21;

  • ApplicationMaster:用户类引发异常:org。阿帕奇。火花sql。AnalysisException:未找到表或视图:“DB\U X”。“表Y” Spark会话: 配置单元站点中的配置单元仓库目录。xml:/apps/hive/warehouse/ 此处抛出错误: 在java中: 在spark shell interactive中: 显示创建表table\u Y: Hadoop文件:

  • 我在我的电脑上安装了homestead,然后我尝试通过本地域访问我的文件。但是当我尝试连接DB时,会显示这个错误。我也无法访问我的其他项目。我把一切都安排得很好。但我不知道为什么给我看这个错误。 注意:我使用的是Windows 8.1 这是我的设置代码: 亚马尔家园酒店 ip:“192.168.10.10” 内存: 2048 CPI: 1 提供者:virtualbox 授权:~/.ssh/id\u

  • 我创造了一个迁移 任何我写的CMD这个错误是可见的。 [Illumb\Database\QueryException]SQLSTATE[42S02]:找不到基表或视图:1146表“prj_roocket.permissions”不存在(SQL:select*from) [PDOException]SQLSTATE[42S02]:未找到基表或视图:1146表“prj_roocket.permissi

  • 当我尝试使用Laravel 5将数据保存到mysql时,我得到了这个错误,其他形式和保存()方法工作正常,但这一个: 这是我的Controller存储方法: 这是我的模型: 我一定是忽略了一些非常明显的事情,因为我不明白为什么拉雷维尔会加上一个“S”这个词。这个表是cotizacion而不是cotizacions。 如何对此进行故障排除?