我们喜欢在hiveexternal表之上创建dataframe,并使用hiveschema和数据在spark级别进行计算。我们可以从配置单元外部表中获取模式并将其用作Dataframe模式吗。
ryhaxcpt1#
启用配置单元的spark可以在开箱即用的情况下完成此操作。请参考文件。
val dataframe = spark.sql("SELECT * FROM table") val schema = dataframe.schema
gtlvzcf82#
在Dataframe中加载数据
df=sqlContext.sql("select * from hive_table")
获取具有structtypes的架构
df.schema
获取配置单元表的列名
df.columns
获取具有数据类型的列名
df.dtypes
mfuanj7w3#
您可以使用自己的列名创建dataframe toDF() ```df = spark.sql("select * from table").toDF(col1,col2)
toDF()
a9wyjsp74#
配置单元元存储知道表的模式,并将此信息传递给spark。表是否是外部的并不重要:
val df = sqlContext.table(tablename)
哪里 sqlContext 属于类型 HiveContext . 您可以使用验证您的架构
sqlContext
HiveContext
df.printSchema
bttbmeg05#
要从spark访问配置单元表,请使用spark HiveContext ```import org.apache.spark.sql.hive.HiveContext;
val sc = new SparkContext(conf)val sqlContext = new HiveContext(sc)..do other stuff..then..
val data = sqlContext.sql("select * from hive_table");
在这里 `data` 将是具有配置单元表架构的Dataframe。
5条答案
按热度按时间ryhaxcpt1#
启用配置单元的spark可以在开箱即用的情况下完成此操作。请参考文件。
gtlvzcf82#
在Dataframe中加载数据
获取具有structtypes的架构
获取配置单元表的列名
获取具有数据类型的列名
mfuanj7w3#
您可以使用自己的列名创建dataframe
toDF()
```df = spark.sql("select * from table").toDF(col1,col2)
a9wyjsp74#
配置单元元存储知道表的模式,并将此信息传递给spark。表是否是外部的并不重要:
哪里
sqlContext
属于类型HiveContext
. 您可以使用验证您的架构bttbmeg05#
要从spark访问配置单元表,请使用spark
HiveContext
```import org.apache.spark.sql.hive.HiveContext;
val sc = new SparkContext(conf)
val sqlContext = new HiveContext(sc)
.
.
do other stuff..then
.
.
val data = sqlContext.sql("select * from hive_table");