如何使用 JDBC 在 Spark 的其他数据库中获取 Table 的创建语句

How to get Create Statement of Table in some other database in Spark using JDBC

问题陈述:

  1. 我有一个 Impala 数据库,其中存在多个表

  2. 我正在创建与 Impala 的 Spark JDBC 连接,并将这些表加载到 spark 数据框中以进行验证,效果很好:

     val df = spark.read.format("jdbc")
                  .option("url","url")
                  .option("dbtable","tablename")
                  .load()
    
  3. 现在下一步,我的实际问题是我需要找到 create 语句,它用于在 Impala 本身中创建表

  4. 因为我不能像下面那样运行命令,因为它给出错误,无论如何我可以为Impala.[=14=中存在的表获取show create语句]

    val df = spark.read.format("jdbc")
                  .option("url","url")
                  .option("dbtable","show create table tablename")
                  .load()
    

也许您可以使用 Spark SQL“本地”执行类似

的操作
val createstmt = spark.sql("show create table <tablename>")

生成的数据框将有一个列(字符串类型),其中包含完整的 CREATE TABLE 语句。

但是,如果您仍然选择走 JDBC 路线,总有一个选项可以使用旧的 JDBC 界面。 Scala 理解 Java 中编写的所有内容,毕竟...

import java.sql.*
Connection conn = DriverManager.getConnection("url")
Statement stmt = conn.createStatement()
ResultSet rs = stmt.executeQuery("show create table <tablename>")
...etc...