如何让Spark SQL和盗贼服务器看到相同的Hive metastore



使用spark-shellHiveContext,我试图显示所有的hive表。但是当我启动thirft server,并使用beeline检查所有表时,它在那里是空的。

在Spark SQL文档中,它说(1)如果我把hive-site.xmlconf/在spark中,DataFramesaveAsTable方法将保存表到xml文件中指定的hive。(2)如果我把hive-site.xmlconf/在spark中,thriftServer将连接到xml文件中指定的hive。

现在我在conf/中没有任何这样的xml文件,所以我想它们应该都使用默认配置。但显然情况并非如此,谁能帮我指出原因?

非常感谢。


当我使用spark-shell时,我看到以下行:

INFO Datastore: The class org.apache.hadoop.hive.metastore.model.MFieldSchema" is tagged as "embedded-only" so does not have its own datastore table.

这是否导致两个(spark-shellthrift-server)看到不同的hive metastore?


我在spark-shell上尝试的代码:

val hc = new org.apache.spark.sql.hive.HiveContext(sc)
val df = hc.sql("show tables")
df.collect()

我试着"show tables"直线,

原来是因为我对hive了解不够。

每次运行HiveQL(例如"SHOW TABLES")时,如果当前文件夹中没有metastore_db,它会为我创建一个。metastore_db存储所有表模式,以便可以查询它们。

所以解决方案是,在同一个文件夹中运行所有与蜂巢相关的程序。对于我的例子,我应该在同一个文件夹中运行start-thriftserver.shspark-shell。现在他们俩可以共用一张桌子了。

此外,如果我编辑hive-site.xml指定亚转移位置,则有可能亚转移始终处于固定位置,这一点我将进一步探讨。

相关内容

  • 没有找到相关文章

最新更新