【问题标题】:Drop Table in SQL Database from Azure Databricks从 Azure Databricks 删除 SQL 数据库中的表
【发布时间】:2020-09-23 05:21:12
【问题描述】:

我需要使用 Azure Databricks (PySpark) 在 SQL 数据库中删除一个表。

我必须不使用 PySpark 之外的任何东西来实现这一点。这可以通过使用 DataFrameWriter 来完成吗?下面的代码(内部我相信)首先删除表,然后创建一个具有相同名称的新表,然后将数据帧数据写入表中。

MyDataFrame.write.format("jdbc").option("url", "jdbc:sqlserver://<SQLServerHost>.windows.net:1433").option("database", 'MyDBName').option("dbtable", 'MyTableName').option("user", "MyUsername").option("password", "MyPassword").mode('overwrite').save()

我只想完全删除该表。有没有代码可以做同样的事情?

问候, 斯里

【问题讨论】:

    标签: python pyspark databricks azure-databricks pyspark-dataframes


    【解决方案1】:
    df = spark.read.format('jdbc')\
    .option("url", "jdbc:sqlserver://MyServerName:MyPort")\
    .option("database", 'MyDBName')\
    .option("user", "MyUser")\
    .option("password", "MyPassword")\
    .option('query', 'drop table tablename')
    

    这成功了。

    【讨论】:

      【解决方案2】:

      您可以尝试以下方法。

      #Setup the JDBC connection. 
      jdbcUrl = "jdbc:mysql://{0}:{1}/{2}".format(jdbcHostname, jdbcPort, jdbcDatabase)
      connectionProperties = {
            "user" : jdbcUsername,
            "password" : jdbcPassword,
            "driver" : "com.mysql.jdbc.Driver"
          }
      
      #Create a query to drop the required table
      pushdown_query = "DROP table tablename"
      
      #run the query
      df = spark.read.jdbc(url=jdbcUrl, table=pushdown_query, properties=connectionProperties)
      display(df)
      

      我希望这会有所帮助。

      【讨论】:

      • 您好 Vikas,感谢您的回复。我收到一条错误消息,指出 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver。不确定在 Azure databricks 群集上的何处进行检查。有什么想法???
      • 是的,我做到了。它给了我所说的错误-java.lang.ClassNotFoundException:com.mysql.jdbc.Driver。发现我想连接到 SQLServer 并因此更改了驱动程序。现在我收到一个单独的错误 - com.microsoft.sqlserver.jdbc.SQLServerException:关键字“DROP”附近的语法不正确。
      • 大家好,这里有什么想法吗??
      • 是的,好像你没有先有驱动,但是一旦你有了驱动,我的命令就不对了。我已经编辑过了。
      • 嗨 Vikas,我运行了你提到的代码。它仍然给出错误。不知何故 table=pushdownQuery 不起作用。我确实试过了。在 drop 错误附近给出相同的不正确语法。我已经尝试过 Drop Table TableName 但给了我同样的错误。
      猜你喜欢
      • 2019-06-23
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      • 2019-06-18
      • 1970-01-01
      • 1970-01-01
      • 2019-11-09
      • 1970-01-01
      相关资源
      最近更新 更多