Apache spark “为什么?”;“创建表格”;产生一个空的数据帧? hc.sql(“创建表emp12(名称字符串)”; res13:org.apache.spark.sql.DataFrame=[] scala>res13.printSchema 根

Apache spark “为什么?”;“创建表格”;产生一个空的数据帧? hc.sql(“创建表emp12(名称字符串)”; res13:org.apache.spark.sql.DataFrame=[] scala>res13.printSchema 根,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,为什么当我签入配置单元数据仓库时,数据框是空的,而表是在配置单元中创建的 hive> describe emp12; OK name string 即使从Spark加载数据,数据也不会进入配置单元表。sql方法将查询结果作为DataFrame返回,因此它仅适用于实际返回任何数据的sql语句CREATE TABLE并不是其中之一,它是一个SQL(逻辑)命令,仅针对其副作用执行,即在目录中注册一个表 如果要获取已发布的表,请发出单独的查询: hc.sql

为什么当我签入配置单元数据仓库时,数据框是空的,而表是在配置单元中创建的

hive> describe emp12;
OK
name                    string

即使从Spark加载数据,数据也不会进入配置单元表。

sql
方法将查询结果作为
DataFrame
返回,因此它仅适用于实际返回任何数据的sql语句
CREATE TABLE
并不是其中之一,它是一个SQL(逻辑)命令,仅针对其副作用执行,即在目录中注册一个表

如果要获取已发布的表,请发出单独的查询:

hc.sql(“从emp12中选择*)
或者只是

hc.表格(“emp12”)
即使我从Spark加载数据,数据也不会进入配置单元表


这可能是另一个问题的症状,但您必须记住Spark与Hive不完全兼容,特别是在使用分区或bucketing等功能时。

sql
方法将查询结果作为
数据帧返回,因此它仅对sql语句有意义,它实际上返回任何数据
CREATE TABLE
并不是其中之一,它是一个SQL(逻辑)命令,仅针对其副作用执行,即在目录中注册一个表

如果要获取已发布的表,请发出单独的查询:

hc.sql(“从emp12中选择*)
或者只是

hc.表格(“emp12”)
即使我从Spark加载数据,数据也不会进入配置单元表


这可能是另一个问题的症状,但您必须记住Spark与Hive不完全兼容,特别是在使用分区或bucketing等功能时。

您并没有在表中放入任何内容,所以它将是空的,对吗?你的确切问题是什么。请解释得更清楚些。@shivanshrivastava我相信用户会问为什么
创建表
不返回表本身。若表不是空的,它不会改变(比如说,
createtable作为SELECT…
)。您并没有在表中放入任何内容,所以它将是空的,对吗?你的确切问题是什么。请解释得更清楚些。@shivanshrivastava我相信用户会问为什么
创建表
不返回表本身。若表不是空的,它就不会改变(比如说,
createtable为SELECT…
)。