Hive之JDBC操作
来源:互联网 发布:胖子升级数据 编辑:程序博客网 时间:2024/06/07 17:12
package com.uplooking.bigdata.sql;
import com.uplooking.bigdata.domain.Student;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.sql.*;
/**
* Java版本,最后对结果集进行封装
*/
public class JavaSparkThirftServer {
public static void main(String[] args) throws Exception {
Class.forName("org.apache.hive.jdbc.HiveDriver");
//2、获得连接Connection
String url = "jdbc:hive2://master:10000/default";
String username = "root";
String password = "";
Connection connection = DriverManager.getConnection(url, username, password);
//3、获得Statement声明
String sql = "select pid, pname, page, pgender from person where page between 17 and 20";
PreparedStatement ps = connection.prepareStatement(sql);
//4、执行SQL
ResultSet rs = ps.executeQuery();
//5、处理返回值
while(rs.next()) {
int pid = rs.getInt("pid");
String pname = rs.getString("pname");
int page = rs.getInt("page");
String pgender = rs.getString("pgender");
// System.out.println(pid + ", " + pname + ", " + page + ", " + pgender);
/*
封装结果集
将以上数据封装到一个对象里面,把该对象返回
Student stu = new Student(pid, pname, page, pgender);
System.out.println(stu);
要想自动对结果集进行封装,就需要通过反射方式来给对象的属性赋值,
那么就需要使用数据库表中的元数据(列名--->类中的属性有个对应)
*/
ResultSetMetaData md = rs.getMetaData();
int cc = md.getColumnCount();//查询的列数
System.out.println("----------------------------------------");
Class clazz = Student.class;
Object obj = clazz.newInstance();
for(int c = 1; c <= cc; c++) {
String columnName = md.getColumnName(c);
Object columnValue = rs.getObject(columnName);
// System.out.println("columnName: " + columnName + ", columnValue:" + columnValue);
PropertyDescriptor pd = new PropertyDescriptor(columnName, clazz);
Method setMethod = pd.getWriteMethod();
setMethod.invoke(obj, columnValue);
}
System.out.println(obj);
}
//6、关闭资源
rs.close();
ps.close();
connection.close();
}
}
import com.uplooking.bigdata.domain.Student;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.sql.*;
/**
* Java版本,最后对结果集进行封装
*/
public class JavaSparkThirftServer {
public static void main(String[] args) throws Exception {
Class.forName("org.apache.hive.jdbc.HiveDriver");
//2、获得连接Connection
String url = "jdbc:hive2://master:10000/default";
String username = "root";
String password = "";
Connection connection = DriverManager.getConnection(url, username, password);
//3、获得Statement声明
String sql = "select pid, pname, page, pgender from person where page between 17 and 20";
PreparedStatement ps = connection.prepareStatement(sql);
//4、执行SQL
ResultSet rs = ps.executeQuery();
//5、处理返回值
while(rs.next()) {
int pid = rs.getInt("pid");
String pname = rs.getString("pname");
int page = rs.getInt("page");
String pgender = rs.getString("pgender");
// System.out.println(pid + ", " + pname + ", " + page + ", " + pgender);
/*
封装结果集
将以上数据封装到一个对象里面,把该对象返回
Student stu = new Student(pid, pname, page, pgender);
System.out.println(stu);
要想自动对结果集进行封装,就需要通过反射方式来给对象的属性赋值,
那么就需要使用数据库表中的元数据(列名--->类中的属性有个对应)
*/
ResultSetMetaData md = rs.getMetaData();
int cc = md.getColumnCount();//查询的列数
System.out.println("----------------------------------------");
Class clazz = Student.class;
Object obj = clazz.newInstance();
for(int c = 1; c <= cc; c++) {
String columnName = md.getColumnName(c);
Object columnValue = rs.getObject(columnName);
// System.out.println("columnName: " + columnName + ", columnValue:" + columnValue);
PropertyDescriptor pd = new PropertyDescriptor(columnName, clazz);
Method setMethod = pd.getWriteMethod();
setMethod.invoke(obj, columnValue);
}
System.out.println(obj);
}
//6、关闭资源
rs.close();
ps.close();
connection.close();
}
}
0 0
- Hive之JDBC操作
- JDBC操作hive
- 从无到有系列之Hive-jdbc测试操作hive03
- Hive之Java操作jdbc以及脚本实现
- JDBC方式远程操作hive
- Java通过JDBC操作Hive
- java 通过jdbc驱动连接hive操作
- 通过JDBC驱动连接Hive操作实例
- 通过JDBC驱动连接Hive操作实例
- java JDBC 链接hive 操作实例
- java jdbc 操作 hive 建表 load 数据
- 餐饮大数据-hive的JDBC操作
- SparkSQL之Hive操作
- servlet之JDBC操作
- Hive学习之HiveServer2 JDBC客户端
- Hive学习之HiveServer2 JDBC客户端
- HIVE JDBC
- Hive JDBC
- 关肇直 automation lingjunrenwu
- Swift使用高德地图SDK
- Pandas DataFrame
- [BZOJ1864][Zjoi2006]三色二叉树-动态规划
- C#操作Redis存储基础(续一)
- Hive之JDBC操作
- flume 自定义kafka sink运行失败:找不到Callback
- Android 如何获取View的高宽、坐标
- Jquery Ajax使用方法
- XXX被多次定义的问题
- 仿真video in to axi_stream和axi_stream to video out
- [Leetcode]_25 Reverse Nodes in k-Group
- CNN情感分析(文本分类)
- Java程序员的成长之路