大数据平台之 SQL 扫描服务(四) - 开发调试(IDEA)
目录
在系列(二)【https://mp.****.net/postedit/102892587】 和 系列(三)【https://mp.****.net/postedit/102892587】中分别介绍了如何安装和配置 Hadoop 以及 Hive,此篇文章重点讲解在 Ubuntu 18.04 虚拟机环境下如何使用 IntelliJ IDEA 开发调试代码。
1.环境准备
- IntelliJ IDEA版本:ideaIC-2019.2.4
- Hadoop版本:2.6.0-cdh5.12.1
- Hive版本:1.1.0-cdh5.12.1
IDEA 下载地址:https://www.jetbrains.com/idea/download/#section=linux
重点:为了保证不必要的麻烦,务必保持 Hadoop 版本和 Hive版本一致
2.安装、启动 IDEA
- 将压缩包 ideaIC-2019.2.4.tar.gz 上传到虚拟机并解压
- 进入到解压后的目录 xxxx/idea-IC-192.7142.36/bin,在终端中执行 "./idea.sh "
- 设置 jdk 以及 maven
3.创建工程
3.1 pom文件
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion><groupId>com.xxxx.data</groupId>
<artifactId>sql-scan</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging><properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties><dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.6.0-cdh5.12.1</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>1.1.0-cdh5.12.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-core</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
</dependencies><build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
3.2 测试代码
package com.xxx.data.sql.scan.semantic;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.ql.Context;
import org.apache.hadoop.hive.ql.parse.ASTNode;
import org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer;
import org.apache.hadoop.hive.ql.parse.ParseDriver;
import org.apache.hadoop.hive.ql.parse.ParseUtils;
import org.apache.hadoop.hive.ql.parse.SemanticAnalyzerFactory;
import org.apache.hadoop.hive.ql.session.SessionState;public class SemanticTest {
public static void main(String[] args) throws Exception {
String command = args[0];
HiveConf conf = new HiveConf();
conf.addResource(new Path("file:///home/tzx/data/hive-1.1.0/conf/hive-site.xml"));SessionState sessionState = SessionState.start(conf);
sessionState.initTxnMgr(conf);
SessionState.setCurrentSessionState(sessionState);Context ctx = new Context(conf);
ParseDriver pd = new ParseDriver();try {
ASTNode tree = pd.parse(command, ctx);
tree = ParseUtils.findRootNonNullToken(tree);
BaseSemanticAnalyzer sem = SemanticAnalyzerFactory.get(conf, tree);
sem.analyze(tree, ctx);
} catch (Exception e) {
// e.printStackTrace();
System.out.println(e.getMessage());
System.out.println("------------------------------ ");
}
}
}
3.3 生成 JAR包
使用 IDEA 生成 JAR包,如图所示:
4. 运行代码
4.1 HADOOP_CLASSPATH
配置环境变量,将 Hive 的 jar 使用脚本或者命令加入到会话终端中,如下命令所示:
for f in /home/tzx/data/hive-1.1.0/lib/*.jar; do
HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:$f;
done
export HADOOP_CLASSPATH
4.2 运行 JAR
进入到工程的 target 目录,执行完 4.1 设置完环境变量后,执行如下命令:
hadoop jar sql-scan-1.0.0.jar com.xxx.data.sql.scan.semantic.SemanticTest "select b.id from a"
如果在 Hive 表中创建了表 a,执行如上命令,会出现如下提示:
5.结论
- 正如前文所述,请务必保证版本一致性,尤其是 Hadoop 版本和 Hive 版本
- 初步测试,可以将 Hive 词法、语法、语义检测中的错误,进行前置提取,封装成服务,对外提供服务
6.参考资料