默认情况下,Spark 在 Hive 和 Hadoop 之上运行,并将其用于数据库转换的指令存储在 Derby - 一个轻量级数据库系统中。 Derby 一次只能运行一个 Spark 实例,因此当您启动第二个笔记本并开始运行 Spark 命令时,它会崩溃。
要解决这个问题,您可以将 Spark 的 Hive 安装连接到 Postgres 而不是 Derby。
Brew 安装 postgres,如果您还没有安装它。
然后下载postgresql-9.4.1212.jar(假设你运行的是java 1.8 aka java8)
来自https://jdbc.postgresql.org/download.html
将此 .jar 文件移动到您的 Spark 安装的 /libexec/jars/ 目录。
例如:/usr/local/Cellar/apache-spark/2.0.1/
(在 Mac 上,您可以通过在命令行中输入 brew info apache-spark 来查找 Spark 的安装位置)
接下来在 /libexec/conf 目录中为您的 Spark 安装创建 hive-site.xml。
例如:/usr/local/Cellar/apache-spark/2.0.1/libexec/conf
这可以通过文本编辑器完成 - 只需使用“.xml”扩展名保存文件。
hive-site.xml 应包含以下文本:
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:postgresql://localhost:5432/hive_metastore</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.postgresql.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>mypassword</value>
</property>
</configuration>
'hive' 和 'mypassword' 可以替换为对您有意义的任何内容 - 但必须与下一步匹配。
最后在 Postgress 中创建用户和密码:在命令行中运行以下命令 -
psql
CREATE USER hive;
ALTER ROLE hive WITH PASSWORD 'mypassword';
CREATE DATABASE hive_metastore;
GRANT ALL PRIVILEGES ON DATABASE hive_metastore TO hive;
\q
就是这样,你完成了。 Spark 现在应该同时在多个 Jupyter Notebook 中运行。