hc.sql("create table emp12(name String)");
res13: org.apache.spark.sql.DataFrame = []
scala> res13.printSchema
root
为什么数据框为空但在Hive数据仓库中检查时是否在Hive中创建了表?
hive> describe emp12;
OK
name string
即使我从Spark加载数据,数据也不会转到Hive表。
答案 0 :(得分:2)
sql
方法将查询结果作为DataFrame
返回,因此仅对实际返回任何数据的SQL语句有意义。 CREATE TABLE
不是其中之一 - 它是一个SQL(逻辑)命令,仅针对其副作用执行,该副作用是在目录中注册表。
如果您想获取该表,则会发出单独的查询:
hc.sql("SELECT * FROM emp12")
或只是
hc.table("emp12")
即使我从Spark加载数据,数据也不会转到Hive表。
这可能是另一个问题的症状,但一般来说你必须记住Spark与Hive不完全兼容,尤其是在使用分区或分区等功能时。