在spark中访问Hive表

时间:2014-10-14 12:22:37

标签: hadoop apache-spark hive

我安装了Hive 0.13并创建了自定义数据库。我有使用mvn -hive选项构建的spark 1.1.0单节点集群。 我想使用hivecontext在spark应用程序中访问此数据库中的表。但是hivecontext总是读取在spark目录中创建的本地Metastore。我已经在spark / conf目录中复制了hive-site.xml 我是否需要进行任何其他配置?

1 个答案:

答案 0 :(得分:2)

第1步: 使用最新版本设置SPARK ....

$ cd $SPARK_Home; ./sbt/sbt -Phive assembly
$ cd $SPARK_Home; ./sbt/sbt -Phivethriftserver assembly

通过执行此操作,您将下载一些jar文件,并且默认情况下它将被添加,无需添加....

步骤2:
hive-site.xml从您的Hive群集复制到$SPARK_HOME/conf/dir并编辑XML文件,并将这些属性添加到下面列出的文件中:

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://MYSQL_HOST:3306/hive_{version}</value>
    <description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore/description>
</property>
<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>XXXXXXXX</value>
    <description>Username to use against metastore database/description>
</property> 
<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>XXXXXXXX</value>
    <description>Password to use against metastore database/description>
</property>

步骤3:下载MYSQL JDBC连接器并将其添加到SPARK CLASSPATH。     运行此命令bin / compute-classpath.sh
    并为以下脚本添加以下行。

CLASSPATH=”$CLASSPATH:$PATH_TO_mysql-connector-java-5.1.10.jar

如何从HIVE检索数据到SPARK ......

步骤1:
通过以下命令启动所有deamons ....

start-all.sh

步骤2:
通过以下命令启动配置单元服务器2 ....

hive --service hiveserver2 & 

步骤3:
通过以下命令启动spark服务器....

start-spark.sh 

最后通过检查以下命令来检查这些是否已经启动....

RunJar 
ResourceManager 
Master 
NameNode 
SecondaryNameNode 
Worker 
Jps 
JobHistoryServer 
DataNode 
NodeManager

步骤4:
通过以下命令启动主站....

./sbin/start-master.sh 

要停止主人使用以下命令.....

./sbin/stop-master.sh

步骤5:
打开一个新的终端....
通过以下路径开始直线....

hadoop@localhost:/usr/local/hadoop/hive/bin$ beeline 

请求输入后......传递下面列出的输入....

!connect jdbc:hive2://localhost:10000 hadoop "" org.apache.hive.jdbc.HiveDriver 

之后通过以下命令设置SPARK .... 注意:在conf文件中设置这些配置,因此无需始终运行....

set spark.master=spark://localhost:7077; 
set hive.execution.engines=spark; 
set spark.executor.memory=2g; // set the memory depends on your server
set spark.serializer=org.apache.spark.serializer.kryoSerializer; 
set spark.io.compression.codec=org.apache.spark.io.LZFCompressionCodec; 

请求输入后....传递要检索数据的查询....并打开浏览器并通过以下命令localhost检入URL:8080您可以看到正在运行的作业并完成URL中的作业......