如何在 Spark on Hive 集群中执行 SQL 查询?
1 Spark on Hive 的概述
Spark on Hive是将 Apache Spark 和 Apache Hive 整合在一起,以满足日益增长的企业级数据分析需求的一种方案。由于Hive 是一种基于 SQL 的分布式数据仓库,将它与Spark混合,可以提供一个基于 Spark 的简单查询语言,提高分析效率,减少开发时间,并降低数据质量的风险。
2 Spark on Hive 安装
(1)下载 Hive
首先,可以到Apache Hive的官网下载Hive。Apache Hive的官网链接:https://hive.apache.org/ 。点击下载Hive需要连接的Apache Mirror站点,并下载最新的Hive发行版本。
(2)配置Hive
下载完Hive后,使用 tar -xzvf 来解压它。然后,在 Apache Hive下载目录中分别创建metastore_db,tmp,logs目录。当解压完成后,指定 HIVE_HOME 环境变量以便在运行时将Hive 和 Hive 执行引擎相关的命令(Hive CLIs)添加到你的 PATH 。
(3)添加Hive库
添加Hive库时,系统会到 mySQL 创建一个名为hive的数据库来存储Hive元信息,并在其中创建2个默认表:version表和配置表。此外,还可以建立hive使用的存储库,用于存储Hive中的表数据。
(4)构建本地Hive库
Hive提供了一个hive-schema-x.x.x.jar文件,该文件中包含hive创建所需的所有表和列,以及必需的表数据。使用hive-schema-x.x.x.jar文件,可以将这些表和表数据安装到被设置的 Hive Metastore 的 mySQL 数据库中,从而构造出本地Hive库。
3 如何在Spark on Hive集群中执行SQL 查询?
(1)连接Hive
使用SQL查询,首先要连接Hive。可以使用Hive JDBC驱动程序来连接Hive服务。Hive JDBC驱动程序是以命令行方式连接Hive服务器的一个基本JDBC驱动程序,可以使用以下代码进行连接:
String driverName = “org.apache.hive.jdbc.HiveDriver”; Class.forName(driverName); String url = “jdbc:hive2://localhost:10000/default”; //用户名和密码 String user = “username”; String password = “password”; //创建数据库连接 Connection conn = DriverManager.getConnection(url,user,password);
(2)执行SQL查询
在成功连接Hive服务器后,可以使用 Hive Query Language(HQL)来执行SQL查询。HQL是Hive中实现的SQL语句类型,可以用它来查询数据库中的表和视图,以及对表中的数据进行各种修改。例如,可以执行以下HQL查询来查询Hive中名为employees的表:
SELECT * FROM employees;
(3)获取结果
在执行完上面的HQL查询语句后,就可以看到结果,用户可以选择是使用SQL工具或者Hive脚本来查看结果,或者直接在Java程序中获取查询结果:
Statement stmt = conn.createStatement(); String sql = “SELECT * FROM employees”; ResultSet res = stmt.executeQuery(sql); while (res.next()) { System.out.println(res.getString(“name”)+"\t"+res.getString(“age”)); }
(4)关闭连接
当获取完所有查询结果后,将关闭Hive连接:
conn.close();