Apache spark 使用内置配置单元运行Spark,并为配置单元元存储配置远程PostgreSQL数据库

Apache spark 使用内置配置单元运行Spark,并为配置单元元存储配置远程PostgreSQL数据库,apache-spark,hive,Apache Spark,Hive,我正在运行带内置配置单元的Spark v1.0.1(带Spark_配置单元的Spark安装=真正的sbt/sbt组装/组装) 我还将配置单元配置为将Metastore作为指令存储在PostgreSQL数据库中: 我可以配置Hive(不是Spark内置的)来使用PostgreSQL,但我不知道如何让它在Spark的Hive中工作 在指令中,我看到我需要将postgresql-jdbc.jar放入或链接到hive/lib,以便hive在运行时可以包含postgresqljdbc $ sudo yu

我正在运行带内置配置单元的Spark v1.0.1(带Spark_配置单元的Spark安装=真正的sbt/sbt组装/组装)

我还将配置单元配置为将Metastore作为指令存储在PostgreSQL数据库中:

我可以配置Hive(不是Spark内置的)来使用PostgreSQL,但我不知道如何让它在Spark的Hive中工作

在指令中,我看到我需要将postgresql-jdbc.jar放入或链接到hive/lib,以便hive在运行时可以包含postgresqljdbc

$ sudo yum install postgresql-jdbc
$ ln -s /usr/share/java/postgresql-jdbc.jar /usr/lib/hive/lib/postgresql-jdbc.jar
使用Spark中的内置配置单元,我应该将postgresql-jdbc.jar放在哪里才能工作?

您有两个选择:

  • 您可以继续使用自己的配置单元安装。您需要在
    $SPARK\u HOME/conf/hive site.xml下放置一份
    hive site.xml
    (或制作一个符号链接)
  • 如果要使用内置配置单元:需要修改
    $SPARK\u HOME/hive-/conf/hive site.xml

    hive site.xml
    中,您需要修改
    javax.jdo.option.*
    值。按照以下思路:

    <property>
     <name>hive.metastore.local</name>
     <value>true</value>
       </property>
       <property>
     <name>javax.jdo.option.ConnectionURL</name>
     <value>jdbc:postgresql://localhost:5432/hivedb</value>
    </property>
    <property>
       <name>javax.jdo.option.ConnectionDriverName</name>
       <value>org.postgresql.Driver</value>
     </property>
     <property>
       <name>javax.jdo.option.ConnectionUserName</name>
       <value>******</value>
     </property>
     <property>
       <name>javax.jdo.option.ConnectionPassword</name>
       <value>******</value>
     </property>
    
    
    hive.metastore.local
    真的
    javax.jdo.option.ConnectionURL
    jdbc:postgresql://localhost:5432/hivedb
    javax.jdo.option.ConnectionDriverName
    org.postgresql.Driver
    javax.jdo.option.ConnectionUserName
    ******
    javax.jdo.option.ConnectionPassword
    ******
    

  • 我找到了解决我问题的办法。我需要为
    SPARK
    添加
    CLASSPATH
    ,以便内置配置单元可以使用
    postgresql-jdbc4.jar

    我添加了3个环境变量:

    export CLASSPATH="$CLASSPATH:/usr/share/java/postgresql-jdbc4.jar"
    export SPARK_CLASSPATH=$CLASSPATH
    export SPARK_SUBMIT_CLASSPATH=$CLASSPATH
    
    火花_类路径用于火花壳

    SPARK\u SUBMIT\u类路径用于SPARK SUBMIT(我不确定)


    现在我可以将
    sparkshell
    与内置的配置一起使用
    Postgres中的Metastore

    我将
    Hive site.xml
    放到
    $spark\u HOME/conf
    中,但它不起作用。我想当我放置
    hivesite.xml
    时,这将成为内置配置单元的配置。我的
    hive site.xml
    包含了选项2中建议的所有配置。我可以将shark与hive一起使用,但我需要在Spark上使用hive,因为我想使用pyspark编写代码。谢谢你的帮助!我原来放火花不是鲨鱼。我看错了,现在将回到spark。我也没有在spark_家中找到蜂巢目录。如果我能将postgresql-jdbc.jar放在SPARK安装的hive/lib中,我就能解决我的问题。你有什么建议吗?如果你使用shark,蜂巢目录是为你准备的。然而,你没有使用它。我已经更新了我的答案