使用 JDBC 进行数据访问
|
收藏
本文档所描述的内容属于神策分析的高级使用功能,涉及较多技术细节,适用于对相关功能有经验的用户参考。如果对文档内容有疑惑,请咨询神策值班同学获取一对一的协助。
1. 概述
神策系统提供了直接使用 JDBC 方式进行数据查询的能力,该方式适用于代码中集成使用 SQL 查询神策系统表数据,或使用支持 JDBC 的 SQL IDE 工具对神策数据表进行查询。
2. 使用场景
- 数据量:推荐返回小于 1000 万行数据且小于 50 列的查询
- 目前仅限数据查询场景
3. 使用方法
3.1. 获取 JDBC 地址和认证信息
如果是私有部署,且神策分析版本在 3.0.1 及以上,访问「数据接入→ 数据表管理」页面,点击页面右上角「查看 JDBC 连接信息」链接,即可查看详细信息。
展示内容如下图
3.2. JDBC 连接访问
如果使用代码访问,我们建议使用 3.1.3 版本的 Hive JDBC Driver 来进行访问,Maven 的依赖定义如下:
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>3.1.3</version>
</dependency>
XML
JDBC 连接示例代码如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcDemo {
public static void main(String[] args) {
String jdbcUrl = "jdbc:hive2://<server-host>:8416/<project-name>"; // 替换为实际 JDBC URL
String username = "<your-username>"; // 替换为实际用户名
String password = "<your-apikey>"; // 替换为实际密码
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
// 加载 Hive JDBC 驱动
Class.forName("org.apache.hive.jdbc.HiveDriver");
// 建立连接
System.out.println("Connecting to Hive...");
connection = DriverManager.getConnection(jdbcUrl, username, password);
// 创建 Statement 对象
statement = connection.createStatement();
// 执行查询
String sql = "SELECT event FROM events LIMIT 10"; // 替换为实际 SQL
resultSet = statement.executeQuery(sql);
// 处理结果
while (resultSet.next()) {
// 处理执行结果
// ...
}
System.out.println("Done!");
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭资源
try {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
JAVA
JDBC 访问认证
- 获取用户名(个人信息->基本信息→登录账号)
- 获取 API-Key,请参考 API Key管理
3.3. 查询数据
- 通过「数据表管理」模块,查询项目对应的数据库名,如 horizon_production_2;
- 通过 SQL 进行查询
SELECT user_id,distinct_id,event,time,$lib as lib FROM horizon_production_2.events WHERE `date` = CURRENT_DATE() LIMIT 10;
SELECT id,first_id,second_id FROM horizon_production_2.users LIMIT 10;
SQL
此功能仅做兼容,不推荐使用!
使用注解进行项目到数据库的自动翻译,且仅对 events 和 users 表查询生效:
- /*SA*/ :使用默认项目进行数据查询
- /*SA(project_name)*/ : 指定项目进行访问,如 production
SELECT user_id,distinct_id,event,time,$lib as lib FROM events WHERE `date` = CURRENT_DATE() LIMIT 10 /*SA*/;
SQL
如果不是查询默认项目,则需要指定项目名称,例如:
SELECT id,first_id,second_id FROM users LIMIT 10 /*SA(production)*/;
SQL
4. JDBC 支持 SQL 类型
4.1.1. DQL(SELECT)
SQL | 说明 | 限制 | 样例 |
---|---|---|---|
SELECT | 数据查询 | 无 | SELECT id FROM horizon_production_2.users LIMIT 10; |
5. 附:配置 DBeaver 客户端
5.1. JDBC 链接配置信息
- 数据库类型/驱动名称:Apache Hive
- 主机:神策 JDBC Server IP
- 端口:8416
- 用户名:神策用户名
- 密码:神策用户名对应的 API-Key
配置样例
注:本文档内容为神策产品使用和技术细节说明文档,不包含适销类条款;具体企业采购产品和技术服务内容,以商业采购合同为准。