从 sparklyr 以默认方案(数据库)以外的方式访问 table
Access table in other than default scheme (database) from sparklyr
在我设法使用 sparklyr
和 yarn-client
方法连接到我们的(新)集群后,现在我可以只显示默认方案中的表。如何连接到 scheme.table
?
使用 DBI
它正在工作,例如使用以下行:
dbGetQuery(sc, "SELECT * FROM scheme.table LIMIT 10")
在 HUE 中,我可以显示所有方案中的所有表。
~g
您可以使用完全限定名称来注册临时视图:
spark_session(sc) %>%
invoke("table", "my_database.my_table") %>%
invoke("createOrReplaceTempView", "my_view")
tbl(sc, "my_view")
或使用sql
方法切换数据库
spark_session(sc) %>% invoke("sql", "USE my_database")
并直接使用 dplyr:tbl
访问 table:
tbl(sc, "my_table")
您还可以使用 DBI 的dbgetQuery
来更改数据库。这很有用,因为它还会将连接中的视图更新到特定数据库而不是默认数据库。
DBI::dbGetQuery(sc, "use <database>")
最后,您可以在 tbl 语句中引用数据库
dplyr::tbl(sc,"want_db.have_data") %>% ...
另一种选择是使用 tbl_change_db 更改会话的默认数据库。
例如:
tbl_change_db("other_db")
在我设法使用 sparklyr
和 yarn-client
方法连接到我们的(新)集群后,现在我可以只显示默认方案中的表。如何连接到 scheme.table
?
使用 DBI
它正在工作,例如使用以下行:
dbGetQuery(sc, "SELECT * FROM scheme.table LIMIT 10")
在 HUE 中,我可以显示所有方案中的所有表。
~g
您可以使用完全限定名称来注册临时视图:
spark_session(sc) %>%
invoke("table", "my_database.my_table") %>%
invoke("createOrReplaceTempView", "my_view")
tbl(sc, "my_view")
或使用sql
方法切换数据库
spark_session(sc) %>% invoke("sql", "USE my_database")
并直接使用 dplyr:tbl
访问 table:
tbl(sc, "my_table")
您还可以使用 DBI 的dbgetQuery
来更改数据库。这很有用,因为它还会将连接中的视图更新到特定数据库而不是默认数据库。
DBI::dbGetQuery(sc, "use <database>")
最后,您可以在 tbl 语句中引用数据库
dplyr::tbl(sc,"want_db.have_data") %>% ...
另一种选择是使用 tbl_change_db 更改会话的默认数据库。
例如:
tbl_change_db("other_db")