使用pyspark从databricks中删除红移表

使用pyspark从databricks中删除红移表,pyspark,amazon-redshift,databricks,pyspark-dataframes,Pyspark,Amazon Redshift,Databricks,Pyspark Dataframes,我尝试连接到一个名为stv_sessions的红移系统表,我可以将数据读入数据帧 此stv_sessions表是一个红移系统表,其中包含当前运行的所有查询的进程id 要从运行中删除查询,我们可以这样做 select pg_terminate_backend(pid) 如果我直接连接到redshift(使用aginity),这对我来说是可行的,但当我试图从databricks运行时,它会给我带来不充分的预防问题 简单地说,我不知道如何从databricks笔记本运行查询 我已经试过了 kill_

我尝试连接到一个名为stv_sessions的红移系统表,我可以将数据读入数据帧

此stv_sessions表是一个红移系统表,其中包含当前运行的所有查询的进程id

要从运行中删除查询,我们可以这样做

select pg_terminate_backend(pid)
如果我直接连接到redshift(使用aginity),这对我来说是可行的,但当我试图从databricks运行时,它会给我带来不充分的预防问题

简单地说,我不知道如何从databricks笔记本运行查询

我已经试过了

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()
请让我知道我遵循的方法是否正确


谢谢

Databricks故意不预先包含此驱动程序。您需要下载并安装用于databricks的官方红移JDBC驱动程序:下载官方的AmazonRedshift JDBC驱动程序,将其上传到DataRicks,并将该库连接到您的集群(建议使用v1.2.12或更低版本的DataRicks集群)。然后,使用表单的JDBC 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替换为红移url。 这可能是您遇到特权问题的唯一原因

链接1: 链接2:

另一个原因可能是redshift databricks连接器仅使用SSL(飞行中的加密),并且可能在redshift群集上设置了IAM角色,仅允许某些用户删除表


如果这些都对你的情况没有帮助,请道歉。

嘿,穆罕默德,谢谢你的回复。我正在使用jdbc驱动程序连接到红移表,并且我能够用Databrick读取这些表。因此,问题可能出在账户本身。我意识到,当我说我可以直接从aginity中删除时,我没有注意到我删除了我用来连接的用户创建的PID。我没有尝试删除其他用户的PID。我会试试看,然后告诉你。这可能是一个许可问题或更大的问题。将尝试在此处更新。再次感谢。