mysql - Spark 存在错误时丢弃 Hive 表

标签 mysql hive apache-spark

我有 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 srcspark-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/

相关文章:

elasticsearch - 通过Spark SQL将Tableau与Elastic Search连接

python - 使用 join 时 Spark 迭代时间呈指数增长

java - 无法在 Spark Executor 中创建 DynamoDB 客户端

php - 配置更改后,MySQL 数据库中的 UTF-8 字符串变得困惑

php - 删除php mysql中的前导零

php - 保存网页内容(php)

arrays - 从HIVE中的给定开始日期和结束日期创建序列数组

php - 根据第一个表的内容连接表

hadoop - Apache Phoenix 非法数据。预期长度至少为 4 个字节,但有 2 个

python - 在 PySpark 中将 Spark DataFrame 从行转换为列,并将其附加到另一个 DataFrame