- Spark 与 Hadoop 安装见此:安装 Spark1.5 与 Hadoop2.6
注意:Spark 官方提供的二进制发行版是不支持 hive 的,需要自行编译。
安装 hive
1 | wget -c http://mirrors.aliyun.com/apache/hive/hive-1.1.1/apache-hive-1.1.1-bin.tar.gz |
设置 hive 环境变量:
1 | export HIVE_HOME="/opt/local/apache-hive-1.1.1-bin" |
编辑 $HIVE_HOME/conf/hive-site.xml:
1 | <configuration> |
设置 MySQL 的 Hive 元数据库。
1 | mysql -u root -p |
执行 $HIVE_HOME/bin/hive 即可进入 hive cli 控制台了。
一些注意事项
hive.optimize.ppd BUG
在执行一些 hiveQL 操作时,
1 | Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.hive.ql.ppd.ExprWalkerInfo.getConvertedNode(Lorg/apache/hadoop/hive/ql/lib/Node;)Lorg/apache/hadoop/hive/ql/plan/ExprNodeDesc; |
1 | hive> set hive.optimize.ppd=false; |
注意 hive jline 与 hadoop jline 起冲突
https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started
Hive 已经更新 Jlive2 版本,而 hadoop 还是使用的 0.9x 系列。可以这样设置来解决这个问题:优先使用用户提供的 jar 包。
1 | export HADOOP_USER_CLASSPATH_FIRST=true |
为 Spark 添加 mysql 驱动
编辑 $SPARK_HOME/conf/spark-defaults.conf 文件,设置以下依赖。当使用 spark-submit
提交任务时需要 spark.executor.extraClassPath 配置,而使用 spark-shell和spark-sql 等方式时需要 spark.driver.extraClassPath 配置。
1 | spark.executor.extraClassPath /opt/local/libs/mysql-connector-java-5.1.38.jar |
也可以在使用 spark-sql 时添加命令行参数来设置 mysql 驱动:--driver-class-path /opt/local/libs/mysql-connector-java-5.1.38.jar