Удалите таблицу красного смещения из блоков данных, используя pyspark - PullRequest
0 голосов
/ 07 февраля 2020

Я попытался подключиться к системной таблице красного смещения с именем stv_sessions, и я могу прочитать данные в фрейм данных.

Эта таблица stv_sessions является системной таблицей красного смещения, в которой есть идентификаторы процессов всех запросов, которые в данный момент выполняются. выполняется.

Чтобы удалить запрос из запущенного, мы можем сделать это.

select pg_terminate_backend(pid)

Хотя это работает для меня, если я напрямую подключаюсь к красному смещению (используя aginity), это вызывает у меня недостаточные проблемы превалирования при попытке запустить из блоков данных.

Проще говоря, я не знаю, как запустить запрос из блокнота данных.

Я пробовал это до сих пор,

kill_query = "select pg_terminate_backend('12345')" 

some_random_df_i_created.write.format("com.databricks.spark.redshift").option("url",redshift_url).option("dbtable","stv_sessions").option("tempdir", temp_dir_loc).option("forward_spark_s3_credentials", True).options("preactions", kill_query).mode("append").save()

Пожалуйста дайте мне знать, если методология, которой я придерживаюсь, верна.

Спасибо

1 Ответ

1 голос
/ 07 февраля 2020

Блоки данных специально не включают этот драйвер. Вам необходимо скачать и установить официальный драйвер Redshift JDB C для блоков данных. : загрузите официальный драйвер Amazon Redshift JDB C, загрузите его в Databricks и подключите библиотеку к вашему кластеру (рекомендуется использовать версию 1.2.12 или ниже с кластерами Databricks). Затем используйте JDB C URL-адреса вида

val jdbcUsername = "REPLACE_WITH_YOUR_USER"
val jdbcPassword = "REPLACE_WITH_YOUR_PASSWORD"
val jdbcHostname = "REPLACE_WITH_YOUR_REDSHIFT_HOST"
val jdbcPort = 5439
val jdbcDatabase = "REPLACE_WITH_DATABASE"
val jdbcUrl = s"jdbc:redshift://${jdbcHostname}:${jdbcPort}/${jdbcDatabase}?user=${jdbcUsername}&password=${jdbcPassword}"
jdbcUsername: String = REPLACE_WITH_YOUR_USER
jdbcPassword: String = REPLACE_WITH_YOUR_PASSWORD
jdbcHostname: String = REPLACE_WITH_YOUR_REDSHIFT_HOST
jdbcPort: Int = 5439
jdbcDatabase: String = REPLACE_WITH_DATABASE
jdbcUrl: String = jdbc:redshift://REPLACE_WITH_YOUR_REDSHIFT_HOST:5439/REPLACE_WITH_DATABASE?user=REPLACE_WITH_YOUR_USER&password=REPLACE_WITH_YOUR_PASSWORD

. Затем попробуйте поместить jdbcUrl вместо вашего redshift_url. Это может быть единственной причиной, по которой вы получаете проблемы с привилегиями.

Ссылка 1: https://docs.databricks.com/_static/notebooks/redshift.html Ссылка 2: https://docs.databricks.com/data/data-sources/aws/amazon-redshift.html#installation

Другая причина может быть соединитель redshift-databricks использует только SSL (шифрование в полете), и вполне возможно, что роли IAM были установлены в кластере redshift, чтобы только некоторые пользователи могли удалять таблицы.

Извините, если ничто из этого не поможет вашему делу.

...