【发布时间】: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 兼容表
标签: apache-spark hadoop hive apache-spark-sql apache-zeppelin