我是Spark和Hive的新手。我正在使用内置Hive运行Spark v1.0.1(使用SPARK_HIVE = true sbt / sbt程序集/汇编的Spark安装)
我还将Hive配置为在PostgreSQL数据库中存储Metastore作为指令:
我可以配置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以使其正常工作?
答案 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)
您有两种选择:
hive-site.xml
$SPARK_HOME/conf/hive-site.xml
(或制作符号链接)的副本
如果您想使用内置配置单元:您需要修改$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>