我想找出表中每列的数据类型?
例如,假设我的表是使用以下方法创建的:
create table X
(
col1 string,
col2 int,
col3 int
)
我想执行一个命令,输出如下内容:
column datatype
col1 string
col2 int
有命令吗?最好用sparksql。但是,如果没有,那么如何用另一种方法获得这些数据呢?我正在使用sparksql查询配置单元表。也许是通过Hive中的元数据?谢谢您。
我想找出表中每列的数据类型?
例如,假设我的表是使用以下方法创建的:
create table X
(
col1 string,
col2 int,
col3 int
)
我想执行一个命令,输出如下内容:
column datatype
col1 string
col2 int
有命令吗?最好用sparksql。但是,如果没有,那么如何用另一种方法获得这些数据呢?我正在使用sparksql查询配置单元表。也许是通过Hive中的元数据?谢谢您。
2条答案
按热度按时间gab6jxml1#
可以将配置单元表作为Dataframe读取,并使用printschema()函数。
在pyspark repl中:
类似于spark shell repl(scala):
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|
//+----+--------+