SPARK 中可用但未显示在 Hive CLI 中的 HIVE 表

Posted

技术标签:

【中文标题】SPARK 中可用但未显示在 Hive CLI 中的 HIVE 表【英文标题】:HIVE Table available in SPARK but does not show up in Hive CLI 【发布时间】:2019-03-21 13:49:53 【问题描述】:

此问题可能与this one 重复,但给出的答案并不令人满意。

我在 Zeppelin 上运行了以下简单代码: (与 pyspark CLI 相同的场景)

%spark2.pyspark
from pyspark.sql import HiveContext
sqlContext = HiveContext(sc)

df = sqlContext.read.format("csv").option("header", "false").option("mode", "DROPMALFORMED").load("/data/data1.csv")
df.write.mode('overwrite').saveAsTable("default.hive_spark");

然后:

%spark2.pyspark
sqlDF = spark.sql("show tables")
sqlDF.show()

它显示:

+--------+----------------+-----------+
|database|       tableName|isTemporary|
+--------+----------------+-----------+
| default|      hive_spark|      false|
+--------+----------------+-----------+

但是当我登录到 HIVE CLI (user:hive) 时,这个表没有显示出来:

0: jdbc:hive2://ip-xxx.eu-west-3.com>USE default;
0: jdbc:hive2://ip-xxx.eu-west-3.com>SHOW TABLES;

+-----------+
| tab_name  |
+-----------+
| hive_test |
+-----------+

我试过了

sqlContext.uncacheTable("default.hive_spark")

我很困惑。

【问题讨论】:

我猜这可能与用户/权限/ACL有关... 检查表的 HDFS 位置 @serge_k 好的,我会这样做,但它有什么帮助? 问题可能出在不同的default 数据库位置,但如果将 hive-site.xml 添加到 hive conf 目录,则位置应该相同。也可以在 Hive CLI 中尝试 msck repair table default.hive_spark 我没想到saveAsTable 生成了 Hive 兼容表 【参考方案1】:

使用 HiveWareHouseConnector,因为您使用的是 hive2

【讨论】:

以上是关于SPARK 中可用但未显示在 Hive CLI 中的 HIVE 表的主要内容,如果未能解决你的问题,请参考以下文章

尽管表存在,但未找到 Hive 表或视图

spark cli

spark-sql(spark sql cli)客户端集成hive

Spark中HIVE表的显示[重复]

如何在 Spark 2.4.0 中使用 PySpark API 将表插入 Hive

Spark应用 Hive On Spark性能调优