2014-07-21 2 views
1

하이브, 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 tablescreate table src(id string)select count(*) from srcspark-shell에 의해 hiveContext에서 ok입니다. 테이블이없는 경우 드롭 테이블 제외. 테이블이 존재할 때 삭제 테이블을 성공적으로 실행할 수 있습니다.

해결하려면 어떻게해야합니까?

도움이 매우 감사합니다.

+0

parm'hive.exec.drop.ignorenonexistent'를 확인하십시오. 'false'입니까? true로 설정하고 다시 시도하십시오 – visakh

+0

hive-site.xml을 점검하고이 속성의 값이 이미 true로 설정되어 있는지 확인하십시오. 여기에 있습니다 : 사실 hive.exec.drop.ignorenonexistent DROP 표/VIEW가 존재하지 않는 테이블/뷰 문제는 여전히 지정하는 경우 오류를보고하지 마십시오 그곳에. – Haimei

답변

0

이 문제는 Spark 1.5.1에는 존재하지 않습니다. 전화를 걸 수 있습니다.

hiveContext.sql('DROP TABLE IF EXISTS test_table') 

스파크는 빠르게 발전하는 플랫폼이며 버전간에 변경이 있습니다.