Spark SQL中如何获取列的数据类型?

sim*_*ple 0 hive apache-spark apache-spark-sql

我想找出表中每一列的数据类型?

例如,假设我的表是使用以下命令创建的:

create table X
(
col1 string,
col2 int,
col3 int
)
Run Code Online (Sandbox Code Playgroud)

我想做一个会输出如下内容的命令:

column datatype
col1  string
col2  int
Run Code Online (Sandbox Code Playgroud)

有这个命令吗?最好是在 SparkSQL 中。但是,如果没有,那么如何使用其他方式获取这些数据呢?我正在使用 Spark sql 查询 Hive 表。也许通过 HIVE 中的元数据?谢谢。

小智 5

您可以将 Hive 表作为 DataFrame 读取并使用 printSchema() 函数。

在 pyspark 回复中:

from pyspark.sql import HiveContext
hive_context = HiveContext(sc)
table=hive_context("database_name.table_name") 
table.printSchema()
Run Code Online (Sandbox Code Playgroud)

在spark-shell repl(Scala)中类似:

import org.apache.spark.sql.hive.HiveContext
val hiveContext = new org.apache.spark.sql.hive.HiveContext
val table=hiveContext.table("database_name.table_name")
table.printSchema
Run Code Online (Sandbox Code Playgroud)