为什么创建了许多spark-warehouse文件夹?

时间:2017-08-22 13:52:00

标签: hadoop apache-spark jdbc hive

我在ubuntu上安装了hadoop 2.8.1,然后安装了spark-2.2.0-bin-hadoop2.7。我使用了spark-shell并创建了表格。我再次使用beeline并创建表格。我观察到有三个不同的文件夹被创建名为spark-warehouse:

1- spark-2.2.0-bin-hadoop2.7 / spark-warehouse

2- spark-2.2.0-bin-hadoop2.7 / bin / spark-warehouse

3- spark-2.2.0-bin-hadoop2.7 / sbin / spark-warehouse

什么是火花仓库,为什么这些创造了很多次? 有时我的火花壳和直线显示不同的数据库和表格,有时它显示相同。我没有得到正在发生的事情?

此外,我没有安装配置单元,但我仍然可以使用beeline,我也可以通过java程序访问数据库。蜂巢是如何进入我的机器的? 请帮我。我是新手,通过在线教程激发并安装它。

以下是我用来通过JDBC连接apache spark的java代码:

 private static String driverName = "org.apache.hive.jdbc.HiveDriver";

public static void main(String[] args) throws SQLException {
    try {
        Class.forName(driverName);
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        System.exit(1);
    }
    Connection con = DriverManager.getConnection("jdbc:hive2://10.171.0.117:10000/default", "", "");
    Statement stmt = con.createStatement();

3 个答案:

答案 0 :(得分:5)

  

究竟是什么火花仓库以及为什么这些创造了很多次?

除非另有配置,否则Spark将创建一个名为metastore_db且内容为derby.log的内部Derby数据库。看起来你没有改变它。

This is the default behavior, as point out in the Documentation

  

hive-site.xml未配置时,上下文会自动在当前目录中创建metastore_db,并创建由spark.sql.warehouse.dir配置的目录,默认为目录{{1在Spark应用程序启动的当前目录中

  

有时我的火花壳和直线显示不同的数据库和表格,有时它显示相同的

您在这些不同的文件夹中启动这些命令,因此您看到的仅限于当前工作目录。

  

我使用beeline并创建了表格......蜂巢如何在我的机器上出现?

它没有。您可能正在连接到Spark Thrift Server,它与HiveServer2协议完全兼容,Derby数据库,如上所述,或者,您确实有一个HiveServer2实例位于spark-warehouse

无论如何,这里不需要JDBC连接。您可以直接使用10.171.0.117功能。

答案 1 :(得分:1)

在独立模式下,Spark将在目录中创建Metastore 从哪里发射。 这在此解释:https://spark.apache.org/docs/latest/sql-programming-guide.html#hive-tables

因此,您应该设置spark.sql.warehouse.dir,或者只是确保始终从同一目录启动您的spark作业 (运行bin/spark而非cd bin ; ./spark等)。

答案 2 :(得分:0)

这是我的两分钱,如果您使用hive从命令行执行sql,则spark-warehouse也会在启动目录中创建。

在这种情况下,您需要在hive.metastore.warehouse.dir下指定$HIVE_HOME/conf/hive-site.xml

重新启动配置单元metastore服务,并更改配置单元仓库,将不再创建spark-warehouse