使用内置Hive运行Spark并为Hive Metastore配置远程PostgreSQL数据库

时间:2014-08-06 02:22:30

标签: apache-spark hive apache-spark-1.2

我是Spark和Hive的新手。我正在使用内置Hive运行Spark v1.0.1(使用SPARK_HIVE = true sbt / sbt程序集/汇编的Spark安装)

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

http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH4/4.2.0/CDH4-Installation-Guide/cdh4ig_topic_18_4.html

我可以配置Hive(不使用Spark内置)来使用PostgreSQL,但我不知道如何在Spark中使用Hive

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

$ sudo yum install postgresql-jdbc
$ ln -s /usr/share/java/postgresql-jdbc.jar /usr/lib/hive/lib/postgresql-jdbc.jar

使用Spark中的内置Hive,我应该在哪里放置postgresql-jdbc.jar以使其正常工作?

2 个答案:

答案 0 :(得分:4)

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

我添加了3个环境变量:

export CLASSPATH="$CLASSPATH:/usr/share/java/postgresql-jdbc4.jar"
export SPARK_CLASSPATH=$CLASSPATH
export SPARK_SUBMIT_CLASSPATH=$CLASSPATH

SPARK_CLASSPATH 用于 spark-shell

SPARK_SUBMIT_CLASSPATH 用于 spark-submit (我不确定)

现在我可以将spark-shell与内置Hive一起使用,配置使用Metastore in Postgres

答案 1 :(得分:1)

您有两种选择:

  1. 您可以继续使用自己的配置单元安装。您需要在hive-site.xml
  2. 下放置$SPARK_HOME/conf/hive-site.xml(或制作符号链接)的副本
  3. 如果您想使用内置配置单元:您需要修改$SPARK_HOME/hive-<version>/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>