我在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();
答案 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
。