Apache spark 如何在spark SQL中获取列的数据类型?
我想找出表中每列的数据类型 例如,假设我的表是使用以下方法创建的:Apache spark 如何在spark SQL中获取列的数据类型?,apache-spark,hive,apache-spark-sql,Apache Spark,Hive,Apache Spark Sql,我想找出表中每列的数据类型 例如,假设我的表是使用以下方法创建的: create table X ( col1 string, col2 int, col3 int ) 我想执行一个命令,输出如下内容: column datatype col1 string col2 int 有这个命令吗?最好使用SparkSQL。但是,如果没有,那么如何使用另一种方法获取这些数据呢?我正在使用spark sql查询配置单元表。也许是通过HIVE中的元数据?多谢各位 您可以将配置单元表读取为数据帧,并使
create table X
(
col1 string,
col2 int,
col3 int
)
我想执行一个命令,输出如下内容:
column datatype
col1 string
col2 int
有这个命令吗?最好使用SparkSQL。但是,如果没有,那么如何使用另一种方法获取这些数据呢?我正在使用spark sql查询配置单元表。也许是通过HIVE中的元数据?多谢各位 您可以将配置单元表读取为数据帧,并使用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):
您可以将配置单元表读取为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):
您可以使用
desc.
(或)
spark.catalog.listColumns(“.”)
spark.sql("create table X(col1 string,col2 int,col3 int)")
spark.catalog.listColumns("default.x").select("name","dataType")show()
//+----+--------+
//|name|dataType|
//+----+--------+
//|col1| string|
//|col2| int|
//|col3| int|
//+----+--------+
示例:
spark.sql("create table X(col1 string,col2 int,col3 int)")
spark.catalog.listColumns("default.x").select("name","dataType")show()
//+----+--------+
//|name|dataType|
//+----+--------+
//|col1| string|
//|col2| int|
//|col3| int|
//+----+--------+
使用desc获取列名和数据类型:
spark.sql("desc default.x").select("col_name","data_type").show()
//+--------+---------+
//|col_name|data_type|
//+--------+---------+
//| col1| string|
//| col2| int|
//| col3| int|
//+--------+---------+
使用spark.catalog获取列名称和数据类型:
spark.sql("create table X(col1 string,col2 int,col3 int)")
spark.catalog.listColumns("default.x").select("name","dataType")show()
//+----+--------+
//|name|dataType|
//+----+--------+
//|col1| string|
//|col2| int|
//|col3| int|
//+----+--------+
您可以使用
desc.
(或)
spark.catalog.listColumns(“.”)
spark.sql("create table X(col1 string,col2 int,col3 int)")
spark.catalog.listColumns("default.x").select("name","dataType")show()
//+----+--------+
//|name|dataType|
//+----+--------+
//|col1| string|
//|col2| int|
//|col3| int|
//+----+--------+
示例:
spark.sql("create table X(col1 string,col2 int,col3 int)")
spark.catalog.listColumns("default.x").select("name","dataType")show()
//+----+--------+
//|name|dataType|
//+----+--------+
//|col1| string|
//|col2| int|
//|col3| int|
//+----+--------+
使用desc获取列名和数据类型:
spark.sql("desc default.x").select("col_name","data_type").show()
//+--------+---------+
//|col_name|data_type|
//+--------+---------+
//| col1| string|
//| col2| int|
//| col3| int|
//+--------+---------+
使用spark.catalog获取列名称和数据类型:
spark.sql("create table X(col1 string,col2 int,col3 int)")
spark.catalog.listColumns("default.x").select("name","dataType")show()
//+----+--------+
//|name|dataType|
//+----+--------+
//|col1| string|
//|col2| int|
//|col3| int|
//+----+--------+
很好,谢谢。有没有一种方法可以只用sql语法来实现这一点?我们有一些内部工具,其中spark对象不暴露于仅限用户的SQL命令。谢谢。我们需要HiveContext来读取Hive中的表。我不确定使用SqlContext是否也可以这样做。pyspark示例缺少
表
函数。pyspark中的第3行应该是:table=hive\u context.table(“database\u name.table\u name”)
如果不这样做,您将得到一个错误。df.dtypes它将给出数据框列名和相应的数据类型。很酷,谢谢。有没有一种方法可以只用sql语法来实现这一点?我们有一些内部工具,其中spark对象不暴露于仅限用户的SQL命令。谢谢。我们需要HiveContext来读取Hive中的表。我不确定使用SqlContext是否也可以这样做。pyspark示例缺少表
函数。pyspark中的第3行应该是:table=hive\u context.table(“database\u name.table\u name”)
如果不这样做,您将得到一个错误。df.dtypes它将给出数据帧列名和相应的数据类型。