하이브, MySQL 및 스파크가 있습니다. 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). 하이브 쉘 환경에서 drop table 명령을 사용하는 것이 좋습니다. 하지만 스파크 쉘 환경에 들어가면 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에서 ok입니다. 테이블이없는 경우 드롭 테이블 제외. 테이블이 존재할 때 삭제 테이블을 성공적으로 실행할 수 있습니다.
해결하려면 어떻게해야합니까?
도움이 매우 감사합니다.
parm'hive.exec.drop.ignorenonexistent'를 확인하십시오. 'false'입니까? true로 설정하고 다시 시도하십시오 – visakh
hive-site.xml을 점검하고이 속성의 값이 이미 true로 설정되어 있는지 확인하십시오. 여기에 있습니다 : 사실 hive.exec.drop.ignorenonexistent DROP 표/VIEW가 존재하지 않는 테이블/뷰 설명> 문제는 여전히 지정하는 경우 오류를보고하지 마십시오 그곳에. –
Haimei