【问题标题】:How to run multiple instances of Spark 2.0 at once (in multiple Jupyter Notebooks)?如何一次运行多个 Spark 2.0 实例(在多个 Jupyter Notebook 中)?
【发布时间】:2017-02-06 22:41:55
【问题描述】:

我有一个脚本,可以方便地在 Jupyter Notebook 中使用 Spark。这很好,除非我在第二个笔记本中运行 spark 命令(例如测试一些临时工作)。

我收到一条很长的错误消息,其中的关键部分似乎是:

Py4JJavaError:调用 o31.json 时出错。 : java.lang.RuntimeException: java.lang.RuntimeException: 无法实例化 org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient`

。 . .

原因:ERROR XSDB6:另一个 Derby 实例可能已经启动了数据库 /metastore_db

问题似乎是我一次只能运行一个 Spark 实例。

如何设置 Spark 以同时在多个笔记本中运行?

【问题讨论】:

    标签: pyspark derby jupyter-notebook apache-spark-2.0


    【解决方案1】:

    默认情况下,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 中运行。

    【讨论】:

      猜你喜欢
      • 2019-10-28
      • 2023-01-31
      • 1970-01-01
      • 2020-07-11
      • 2018-01-08
      • 2022-07-27
      • 1970-01-01
      • 1970-01-01
      • 2021-04-10
      相关资源
      最近更新 更多