如何在sparksql中获取列的数据类型?

wmomyfyw  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(1032)

我想找出表中每列的数据类型?
例如,假设我的表是使用以下方法创建的:

create table X
(
col1 string,
col2 int,
col3 int
)

我想执行一个命令,输出如下内容:

column datatype
col1  string
col2  int

有命令吗?最好用sparksql。但是,如果没有,那么如何用另一种方法获得这些数据呢?我正在使用sparksql查询配置单元表。也许是通过Hive中的元数据?谢谢您。

gab6jxml

gab6jxml1#

可以将配置单元表作为Dataframe读取,并使用printschema()函数。
在pyspark repl中:

from pyspark.sql import HiveContext
hive_context = HiveContext(sc)
table=hive_context("database_name.table_name") 
table.printSchema()

类似于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
jjhzyzn0

jjhzyzn02#

你可以用 desc <db_name>.<tab_name> (或)
spark.catalog.listColumns(".<tab_name>") Example:spark.sql("create table X(col1 string,col2 int,col3 int)")Using desc to get column_name and datatype: ```
spark.sql("desc default.x").select("col_name","data_type").show()

//+--------+---------+
//|col_name|data_type|
//+--------+---------+
//| col1| string|
//| col2| int|
//| col3| int|
//+--------+---------+
`Using spark.catalog to get column_name and data_type:`
spark.catalog.listColumns("default.x").select("name","dataType")show()

//+----+--------+
//|name|dataType|
//+----+--------+
//|col1| string|
//|col2| int|
//|col3| int|
//+----+--------+

相关问题