gpt4 book ai didi

apache-spark - 为什么 spark 的 global_temp 数据库不可见?

转载 作者:行者123 更新时间:2023-12-05 05:21:27 26 4
gpt4 key购买 nike

借助 Spark 2.1.0 中新的 createGlobalTempView,可以在多个 spark session 之间共享一个表

但是,无法从外部访问此数据库。例如:

scala> spark.sql("select * from global_temp.salaries")
res240: org.apache.spark.sql.DataFrame = [yearID: string, teamID: string ... 3 more fields]

scala> salaries.createGlobalTempView("salaries")

scala> spark.sql("select * from global_temp.salaries").show(5)
+------+------+----+---------+------+
|yearID|teamID|lgID| playerID|salary|
+------+------+----+---------+------+
| 1985| ATL| NL|barkele01|870000|
| 1985| ATL| NL|bedrost01|550000|
| 1985| ATL| NL|benedbr01|545000|
| 1985| ATL| NL| campri01|633333|
| 1985| ATL| NL|ceronri01|625000|
+------+------+----+---------+------+
only showing top 5 rows

这里没有错,但是奇怪的行为来了

scala> spark.catalog.listTables.show
+----+--------+-----------+---------+-----------+
|name|database|description|tableType|isTemporary|
+----+--------+-----------+---------+-----------+
+----+--------+-----------+---------+-----------+

scala> spark.catalog.tableExists("global_temp","salaries")
res249: Boolean = true

我的猜测是 global_temp 数据库对所有用户都是隐藏的,但如果我们已经知道要查询哪个表,则可以查询其中的表。

这是正常行为还是我做错了什么?

感谢任何解释

最佳答案

当您运行 spark.catalog.listTables.show 时,如果您没有为 listTables() 函数指定数据库,它将指向 default 数据库。

试试这个:

spark.catalog.listTables("global_temp").show

它绝对不会对所有用户隐藏,恰恰相反。它只会在您的 spark session 运行时可见,但对同时运行的其他 spark session 可见,例如在同一集群和目录设置上运行他们自己的 spark-shell 的同事。

关于apache-spark - 为什么 spark 的 global_temp 数据库不可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42838335/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com