日萌社

人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)


 

大数据组件使用 总文章



如果Maven下载ImpalaJDBC41不下来的话,可以到 http://repo.odysseusinc.com/artifactory/community-libs-release-local/com/cloudera/ImpalaJDBC41/2.6.3/ 下载

	    <!-- https://mvnrepository.com/artifact/com.cloudera/ImpalaJDBC41 -->
        <dependency>
            <groupId>com.cloudera</groupId>
            <artifactId>ImpalaJDBC41</artifactId>
            <version>2.6.3</version>
        </dependency>

第一种方式 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Impala_jdbc {
    private static String DRIVER = "com.cloudera.impala.jdbc41.Driver";
    private static String URL = "jdbc:impala://IP:21050/数据库名";

    public static void main(String[] args)
    {
        Connection conn = null;
        ResultSet rs = null;
        PreparedStatement pst = null;


        try {
            Class.forName(DRIVER);
            conn = DriverManager.getConnection(URL);
            pst = conn.prepareStatement("select * from 数据库名.表名 limit 3");
            rs = pst.executeQuery();
            while (rs.next()) {
                //rs.get类型(字段列):字段列从1开始算起
                System.out.println(rs.getString(1) + "," + rs.getObject(2) + "," + rs.getObject(3));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                conn.close();
                pst.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

}

 


第二种方式:druid连接池方式

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.16</version>
        </dependency>
        <dependency>
            <groupId>commons-dbutils</groupId>
            <artifactId>commons-dbutils</artifactId>
            <version>1.7</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.cloudera/ImpalaJDBC41 -->
        <dependency>
            <groupId>com.cloudera</groupId>
            <artifactId>ImpalaJDBC41</artifactId>
            <version>2.6.3</version>
        </dependency>

\src\main\resources\Impaladruid.properties

driverClassName=com.cloudera.impala.jdbc41.Driver
url=jdbc:impala://IP:21050/数据库名

initialSize=10
maxActive=100
maxWait=60000

timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
validationQuery=SELECT 1
testWhileIdle=true
testOnBorrow=false
testOnReturn=false
poolPreparedStatements=false
maxPoolPreparedStatementPerConnectionSize=200
import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

public class MysqlUtil
{
    private static DataSource dataSource; //Druid 连接池
    private static Connection conn; //数据库连接对象
    private static Logger logger = LogManager.getLogger(MysqlUtil.class);
    private static InputStream in = null;
    private final static MysqlUtil mysqlUtil = new MysqlUtil();
    static
    {
        //使用druid.properties属性文件的配置方式 设置参数,文件名称没有规定但是属性文件中的key要一定的
        // 从druid.properties属性文件中获取key参数对应的value配置信息
        Properties properties = new Properties();
        try
        {
            //resources目录下的配置文件实际都会被编译进到 \target\classes 目录下
            in = mysqlUtil.getClass().getResourceAsStream("/Impaladruid.properties");
            properties.load(in);
            in.close();
        }
        catch (IOException e)
        {
            logger.error("ERROR:",e);//错误异常完整写入日志文件
//            e.printStackTrace();//窗口也打印错误信息
        }
        // 创建 Druid 连接池
        try {
            dataSource = DruidDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
            logger.error("ERROR:",e);//错误异常完整写入日志文件
//            e.printStackTrace();//窗口也打印错误信息
        }

        //从 连接池中获取一个 数据库连接对象
//        Connection  数据库连接对象conn  =  dataSource.getConnection();
        //调用数据库连接对象的close()方法,把连接对象归还给连接池,并不是关闭连接
//        conn.close();
    }

    //获得连接池
    public static DataSource getDataSource()
    {
        return dataSource;
    }

    //从 连接池中获取一个 数据库连接对象
    public static Connection getConnection()
    {
        //从 连接池中获取一个 数据库连接对象
        try {
//            System.out.println("从 连接池中获取一个 数据库连接对象");
            conn  =  dataSource.getConnection();
        } catch (Exception e) {
//            e.printStackTrace();//窗口也打印错误信息
            logger.error("ERROR:",e);//错误异常完整写入日志文件
        }
        return conn;
    }

    /*
        new QueryRunner(MysqlUtil.getDataSource())
                QueryRunner中传入连接池,交由QueryRunner自动操作连接池中的连接。提供了自定事务处理、自动释放资源等操作,无需再手动。
                所以无需手动调用conn.close(),交由QueryRunner自动管理。
    */
    //调用数据库连接对象的close()方法,把指定的连接对象归还给连接池,并不是关闭连接
    public static void connectionClose(Connection conn)
    {
        //调用数据库连接对象的close()方法,把连接对象归还给连接池,并不是关闭连接
        try {
            conn.close();
        } catch (SQLException e) {
//            e.printStackTrace();//窗口也打印错误信息
            logger.error("ERROR:",e);//错误异常完整写入日志文件
        }
    }

}

注意

1.druid连接池既可用于mysql,也可用于Impala 

2.QueryRunner queryRunner = new QueryRunner(MysqlUtil.getDataSource()) 
     new QueryRunner(DataSource dataSource):表示从连接池中取出一条Connection对象,并且交给连接池自动管理、自动close回收到连接池中
     因此 每次执行新的sql之前,都应该获取新的连接对象,即先执行 new QueryRunner(DataSource dataSource) 或 DataSource对象.getConnection() 获取连接对象,再使用新的连接对象执行新的sql

 

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

import java.sql.*;
import java.util.List;

public class ImpalaTest
{

     public static void main(String[] args)
    {
        QueryRunner queryRunner = new QueryRunner(MysqlUtil.getDataSource());
        List<Object[]> arrayListResult = null;
        String sql =  "";
        try
        {
            arrayListResult = queryRunner.query(sql, new ArrayListHandler());
        } 
        catch (SQLException e) 
        {
            e.printStackTrace();
        }
        for (Object[] o : arrayListResult1)
        {
            System.out.println(o[0].toString());
        }
    }
}

 

GitHub 加速计划 / druid / druid
27.83 K
8.56 K
下载
阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池
最近提交(Master分支:3 个月前 )
f060c270 - 15 天前
1613a765 * Improve gaussdb ddl parser * fix temp table 17 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐