我有 Hive、MySQL 和 Spark。 MySQL 是 Hive metastore_db。我按照本指南对其进行配置 ( http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH4/4.2.0/CDH4-Installation-Guide/cdh4ig_topic_18_4.html )。我在hive shell环境下做drop table命令就可以了。但是当我进入 spark-shell 环境时,我使用 hiveContext.hql("DROP TABLE IF EXISTS hivetesting")
。然后,我收到以下错误:
ERROR Hive: NoSuchObjectException(message:default.hivetesting table not found)
at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$get_table_result$get_table_resultStandardScheme.read(ThriftHiveMetastore.java:27129)
at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$get_table_result$get_table_resultStandardScheme.read(ThriftHiveMetastore.java:27097)
at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$get_table_result.read(ThriftHiveMetastore.java:27028)
at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Client.recv_get_table(ThriftHiveMetastore.java:936)
at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Client.get_table(ThriftHiveMetastore.java:922)
at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.getTable(HiveMetaStoreClient.java:854)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.invoke(RetryingMetaStoreClient.java:89)
at com.sun.proxy.$Proxy11.getTable(Unknown Source)
at org.apache.hadoop.hive.ql.metadata.Hive.getTable(Hive.java:950)
......
每个命令都在 hive shell
下成功运行。同时 show tables
create table src(id string)
和 select count(*) from src
在 spark-shell
通过 hiveContext。 Except drop table if the table not exists. drop table 可以在表存在时运行成功。
我该怎么做才能解决这个问题?
非常感谢任何帮助。
最佳答案
Spark 1.5.1不存在该问题;我能够成功调用
hiveContext.sql('DROP TABLE IF EXISTS test_table')
Spark 是一个快速发展的平台,不同版本之间的事情会发生变化。
关于mysql - Spark 存在错误时丢弃 Hive 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24857761/