1

我正在尝试在 Hive 中创建一个外部表,如 Datastax Enterprise 3.1 的第 88 页所示。文档。

该语句与错误消息一起在下面进一步说明。

我究竟做错了什么?

问候汉斯-彼得

hive> create external table testext (m string, n string, o string, p string)
> STORED BY 'org.apache.hadoop.hive.cassandra.cql3.CqlStorageHandler'
> TBLPROPERTIES ( "cassandra.ks.name" = "cql3ks",
> "cassandra.cf.name" = "test",
> "cassandra.cql3.type" = "text, text, text, text");
FAILED: Error in metadata:       
com.datastax.bdp.hadoop.hive.metastore.CassandraHiveMetaStoreException: 
There was a problem   with the Cassandra Hive MetaStore: Problem finding unmapped
keyspaces
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask   
2013-10-15 12:47:36,657 WARN conf.HiveConf (HiveConf.java:(63)) - 已弃用:忽略在 /etc/dse/hive/hive-default.xml 的 CLASSPATH 中找到的 hive-default.xml
2013-10-15 12:48:41,003 WARN config.DatabaseDescriptor (DatabaseDescriptor.java:loadYaml(253)) - 请在 cassandra.yaml 中将 'authority' 重命名为 'authorizer'
2013-10-15 12:48:42,988 错误 exec.Task (SessionState.java:printError(400)) - 失败:元数据错误:com.datastax.bdp.hadoop.hive.metastore.CassandraHiveMetaStoreException:有问题Cassandra Hive MetaStore:查找未映射键空间的问题
org.apache.hadoop.hive.ql.metadata.HiveException:com.datastax.bdp.hadoop.hive.metastore.CassandraHiveMetaStoreException:Cassandra Hive MetaStore 出现问题:查找未映射的键空间时出现问题
        在 org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:544)
        在 org.apache.hadoop.hive.ql.exec.DDLTask.createTable(DDLTask.java:3305)
        在 org.apache.hadoop.hive.ql.exec.DDLTask.execute(DDLTask.java:242)
        在 org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:134)
        在 org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:57)
        在 org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1326)
        在 org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1118)
        在 org.apache.hadoop.hive.ql.Driver.run(Driver.java:951)
        在 org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:258)
        在 org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:215)
        在 org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:406)
        在 org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:689)
        在 org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:557)
        在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        在 java.lang.reflect.Method.invoke(Method.java:597)
        在 org.apache.hadoop.util.RunJar.main(RunJar.java:156)
原因:com.datastax.bdp.hadoop.hive.metastore.CassandraHiveMetaStoreException:Cassandra Hive MetaStore 出现问题:查找未映射的键空间时出现问题
        在 com.datastax.bdp.hadoop.hive.metastore.SchemaManagerService.createKeyspaceSchemasIfNeeded(SchemaManagerService.java:230)
        在 com.datastax.bdp.hadoop.hive.metastore.CassandraHiveMetaStore.setConf(CassandraHiveMetaStore.java:112)
        在 org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:62)
        在 org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117)
        在 org.apache.hadoop.hive.metastore.RetryingRawStore.(RetryingRawStore.java:62)
        在 org.apache.hadoop.hive.metastore.RetryingRawStore.getProxy(RetryingRawStore.java:71)
        在 org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.newRawStore(HiveMetaStore.java:346)
        在 org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMS(HiveMetaStore.java:333)
        在 org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultDB(HiveMetaStore.java:371)
        在 org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.init(HiveMetaStore.java:278)
        在 org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.(HiveMetaStore.java:248)
        在 org.apache.hadoop.hive.metastore.HiveMetaStoreClient.(HiveMetaStoreClient.java:114)
        在 org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:2092)
        在 org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:2102)
        在 org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:538)
        ... 17 更多
原因:com.datastax.bdp.hadoop.hive.metastore.CassandraHiveMetaStoreException:Cassandra Hive MetaStore 出现问题:检索键空间演示的列族时出现问题
        在 com.datastax.bdp.hadoop.hive.metastore.SchemaManagerService.createUnmappedTables(SchemaManagerService.java:277)
        在 com.datastax.bdp.hadoop.hive.metastore.CassandraHiveMetaStore.getDatabase(CassandraHiveMetaStore.java:148)
        在 com.datastax.bdp.hadoop.hive.metastore.CassandraHiveMetaStore.getDatabase(CassandraHiveMetaStore.java:136)
        在 com.datastax.bdp.hadoop.hive.metastore.SchemaManagerService.isKeyspaceMapped(SchemaManagerService.java:186)
        在 com.datastax.bdp.hadoop.hive.metastore.SchemaManagerService.finUnmappedKeyspaces(SchemaManagerService.java:137)
        在 com.datastax.bdp.hadoop.hive.metastore.SchemaManagerService.createKeyspaceSchemasIfNeeded(SchemaManagerService.java:224)
        ... 31 更多
原因:com.datastax.bdp.hadoop.hive.metastore.CassandraHiveMetaStoreException:Cassandra Hive MetaStore 出现问题:创建列映射时出现问题 sorg.apache.cassandra.db.marshal.CompositeType(org.apache.cassandra.db. marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type)
        在 com.datastax.bdp.hadoop.hive.metastore.SchemaManagerService.buildTable(SchemaManagerService.java:481)
        在 com.datastax.bdp.hadoop.hive.metastore.SchemaManagerService.createUnmappedTables(SchemaManagerService.java:254)
        ... 36 更多
引起:java.lang.IllegalArgumentException
        在 java.nio.Buffer.limit(Buffer.java:247)
        在 org.apache.cassandra.db.marshal.AbstractCompositeType.getBytes(AbstractCompositeType.java:51)
        在 org.apache.cassandra.db.marshal.AbstractCompositeType.getWithShortLength(AbstractCompositeType.java:60)
        在 org.apache.cassandra.db.marshal.AbstractCompositeType.getString(AbstractCompositeType.java:226)
        在 com.datastax.bdp.hadoop.hive.metastore.SchemaManagerService.addTypeToStorageDescriptor(SchemaManagerService.java:846)
        在 com.datastax.bdp.hadoop.hive.metastore.SchemaManagerService.buildColumnMappings(SchemaManagerService.java:546)
        在 com.datastax.bdp.hadoop.hive.metastore.SchemaManagerService.buildTable(SchemaManagerService.java:460)
        ... 37 更多

2013-10-15 12:48:42,990 错误 ql.Driver (SessionState.java:printError(400)) - 失败:执行错误,从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1
4

2 回答 2

0

我不确定实际问题是什么,但我在 Hive 中创建一个普通表时遇到了这个问题。

我使用 sudo 访问启动 Hive,现在可以按预期运行查询。

$ sudo bin/dse hive
于 2013-10-28T10:08:30.883 回答
0

所以对我有用的是完全清除 Cassandra 中的 HiveMetaStore 键空间,并使用 NetworkTopologyStrategy 副本策略重新创建键空间。我确保将 Analytics 数据中心也添加到新的键空间中,所以它看起来像:

CREATE KEYSPACE HiveMetaStore WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'Analytics' : 2};

然后我在我的分析节点上重新启动了 DSE,他们在 HiveMetaStore 键空间中正确创建了 MetaStore 表,一切又开始工作了!

于 2014-01-09T17:49:37.993 回答