首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在创建表时会出现“需要蜂巢支持”的错误?

为什么在创建表时会出现“需要蜂巢支持”的错误?
EN

Stack Overflow用户
提问于 2017-06-09 17:31:22
回答 1查看 2.4K关注 0票数 0

我在Cloudera中使用pyspark创建了一个使用“hiveContext”的dataframe,然后我尝试使用hive将数据table放到一个sql表中。

下面是我的代码:

代码语言:javascript
运行
复制
from pyspark.sql import HiveContext
hiveContext = HiveContext(SpContext)

from pyspark.sql.types import StructType

schema = StructType.fromJson({'fields': [{'metadata': {},
   'name': 'Date','nullable': True,'type': 'string'},
  {'metadata': {}, 'name': 'Time', 'nullable': True, 'type': 'string'},
  {'metadata': {}, 'name': 'Global_active_power', 'nullable': True, 'type': 'integer'},
  {'metadata': {}, 'name': 'Global_reactive_power', 'nullable': True, 'type': 'string'},
  {'metadata': {},'name': 'Voltage','nullable': True,'type': 'integer'},
  {'metadata': {}, 'name': 'Global_intensity', 'nullable': True, 'type': 'integer'},
  {'metadata': {}, 'name': 'Sub_metering_1', 'nullable': True, 'type': 'string'},
  {'metadata': {}, 'name': 'Sub_metering_2', 'nullable': True, 'type': 'integer'},
  {'metadata': {}, 'name': 'Sub_metering_3', 'nullable': True, 'type': 'string'},
  ],
 'type': 'struct'})

power_cons_hive = power_cons

power_cons_hive_df=hiveContext.createDataFrame(power_cons_hive, schema)

然后我登记了一张桌子:

代码语言:javascript
运行
复制
power_cons_hive_df.registerTempTable("mytempTable")

最后,当我执行以下代码时:

代码语言:javascript
运行
复制
hiveContext.sql("CREATE TABLE power_consumption STORED AS ORC AS SELECT * FROM mytempTable")

我得到了这个错误(我显示的是最初的错误块,因为有很多错误):

代码语言:javascript
运行
复制
Py4JJavaError: An error occurred while calling o31.sql.
: org.apache.spark.sql.AnalysisException: Hive support is required to use CREATE Hive TABLE AS SELECT;;
CreateTable CatalogTable(
    Table: `power_consumption`
    Created: Fri Jun 09 10:12:55 PDT 2017
    Last Access: Wed Dec 31 15:59:59 PST 1969
    Type: MANAGED
    Provider: hive
    Storage(InputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat, OutputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat, Serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde)), ErrorIfExists
   +- Project [Sub_metering_1#141, Sub_metering_3#143]
      +- SubqueryAlias mytemptable, `mytempTable`
         +- Project [Sub_metering_1#141, Sub_metering_3#143]
            +- Project [Sub_metering_1#141, Sub_metering_3#143]
               +- Project [Sub_metering_1#141, Sub_metering_3#143]
                  +- Project [Date#135, Time#136, Global_reactive_power#138, Sub_metering_1#141, Sub_metering_3#143]
                     +- Project [Date#135, Time#136, Global_reactive_power#138, Sub_metering_1#141, Sub_metering_3#143]
                        +- LogicalRDD [Date#135, Time#136, Global_active_power#137, Global_reactive_power#138, Voltage#139, Global_intensity#140, Sub_metering_1#141, Sub_metering_2#142, Sub_metering_3#143]

我不知道为什么会这样,因为我相信到目前为止我的代码是正确的,Hive已经启动,并且在Cloudera经理中具有“良好的健康”状态。

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-14 02:29:19

尝试添加选项--conf spark.sql.catalogImplementation=hive以激发提交。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44463686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档