如何在不在 Databricks 中加载 table 数据的情况下获取模式?

How to get schema without loading table data in Databricks?

我正在使用 Databricks,我使用 spark 加载数据并将其发布到 SQL 数据库。我需要做的任务之一是获取数据库的 table 模式,从而查看每一列的数据类型。到目前为止,我能够做到的唯一方法是加载整个 table 然后提取模式。

df_tableA = spark.read.format("jdbc") \
        .option("url", datasource_url) \
        .option("dbtable", table_name) \
        .option("user", dbuser) \
        .option("password", dbpassword) \
        .option("driver", driver) \
        .load()

但是我的目标是只获取架构而不加载整个 table 因为我想加快进程并且我不想使内存过载。

你能建议一个聪明而优雅的方法来实现我的目标吗?

通常,load 不会将 table 加载到内存中。但是如果你愿意,你可以使用虚拟查询并传递给 dbtable 就像 .option("dbtable", "(select * from table where 1 = 2) t")