Доступ к таблице в схеме, отличной от схемы по умолчанию (базы данных) из sparklyr

После того, как мне удалось подключиться к нашему (новому) кластеру, используя sparklyr с yarn-client метод, теперь я могу показать только таблицы из схемы по умолчанию. Как я могу подключиться к scheme.table? С помощью DBI это работает, например, со следующей строкой:dbGetQuery(sc, "SELECT * FROM scheme.table LIMIT 10")В HUE я могу показать все таблицы из всех схем.

~ г

2 ответа

Решение

Вы можете использовать полное имя для регистрации временного представления:

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:

tbl(sc, "my_table")

Вы также можете использовать DBIdbgetQuery изменить базу данных. Это полезно, поскольку оно также обновит ваше представление в Connections для конкретной базы данных, а не по умолчанию.

DBI::dbGetQuery(sc, "use <database>")

Наконец, вы можете просто сослаться на базу данных в операторе tbl

dplyr::tbl(sc,"want_db.have_data") %>% ...

Другой вариант - использовать tbl_change_db для изменения базы данных по умолчанию для сеанса.

например:

tbl_change_db("other_db")
Другие вопросы по тегам