`
knight_black_bob
  • 浏览: 842914 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hive 增删查改 实例

    博客分类:
  • hive
阅读更多

 

pom

<dependency>  
 <groupId>org.apache.hive</groupId>  
        <artifactId>hive-jdbc</artifactId>   
        <version>0.11.0</version>  
</dependency>  
  
<dependency>  
 <groupId>org.apache.hadoop</groupId>  
        <artifactId>hadoop-common</artifactId>   
        <version>2.2.0</version>  
</dependency>  

 

 

 


 

public class TeminalHiveCoreTest {

    public static void main(String[] args) throws SQLException {
        String tableName = " terminal ";
        String params ="appId,deviceMac,deviceId,deviceToken,deviceImsi,deviceModel,deviceManufacture,channel,appKey,userId,appVersion,versionCod,sdkType,sdkVersion,os,country,language,timezone,resolution,access,accessSubtype,carrier,cpu";
        String partitionId ="appId";
        String clusterId ="deviceToken";
        String baseHdfsPath="hdfs://dev10.aoiplus.openpf:9000";
        String hdfsPath=baseHdfsPath +"/user/hadoop/storm/terminalInfo_terminalInfo-3-0-1483076684221.log";
        
        Connection connection = HiveJdbcConnection.getInstance().getConnection(HiveJdbcConnection.url, HiveJdbcConnection.user, HiveJdbcConnection.password);
        Statement stmt = connection.createStatement();
        ResultSet res = null;
        
        HiveSqlDateDefineLanguage hqddl = new HiveSqlDateDefineLanguage().setCon(connection).setStmt(stmt);
         hqddl.dropTableByName(tableName);
        hqddl.createTableByParams(tableName, params,partitionId,clusterId);
        
        hqddl.loadSQL(tableName, hdfsPath);
        
        HiveSqlDateManageLanguage hqdml = new TermialHiveSqlDMLOperator().setCon(connection).setStmt(stmt).setRes(res);
        List<TerminalInfo>  list = hqdml.findAll(tableName);
        System.out.println(list);
        
        HiveJdbcConnection.getInstance().close(res, stmt, connection);
        
    }
    
    
}

 

 

 

 

package com.curiousby.baoyou.cn.hive.base;

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

/**
 * @Type HiveJdbcConnection.java
 * @Desc 
 * @author hadoop
 * @date 2016年12月29日 下午3:04:42
 * @version 
 */
public class HiveJdbcConnection {

  public   static String driverName = "org.apache.hive.jdbc.HiveDriver"; 
  public     static String url ="jdbc:hive2://172.23.27.120:10000/default";
  public    static String user ="hive";
  public     static String password="hive";
    
    static{
        try { 
            Class.forName(driverName);
        } catch (ClassNotFoundException e) {
            e.printStackTrace(); 
            throw new ExceptionInInitializerError();
        } 
    }
    
    private static HiveJdbcConnection instance = null;
    
    public static HiveJdbcConnection getInstance(){
        if (instance  == null ) {
            synchronized (HiveJdbcConnection.class) {
                if (instance  == null ) {
                    instance = new HiveJdbcConnection();
                }
            }
        }
       return instance;
    }
    
    public Connection getConnection(String url,String user,String password) throws SQLException {  
        return DriverManager.getConnection(url, user, password);  
    } 
    
    public void close(ResultSet rs, Statement st, Connection conn) {  
        try {  
            if (rs != null)  
                rs.close();  
        } catch (SQLException e) {  
            e.printStackTrace();  
        } finally {  
            try {  
                if (st != null)  
                    st.close();  
            } catch (SQLException e) {  
                e.printStackTrace();  
            } finally {  
                if (conn != null)  
                    try {  
                        conn.close();  
                    } catch (SQLException e) {  
                        e.printStackTrace();  
                    }  
            }  
        }  
    }  
    
    
    public static void main(String[] args) throws SQLException {
        
        System.out.println(HiveJdbcConnection.getInstance().getConnection(url, user, password));
    }
    
}

 

public class HiveSqlDateDefineLanguage implements SqlDateDefineLanguageInterface,SqlLoadData{
    
    private Statement stmt;
    private ResultSet res;
    private Connection con;



    @Override
    public boolean createDatabase(String sql) { 
        return false;
    }

    @Override
    public boolean createTable(String sql) { 
        try {
              stmt.execute(sql);
        } catch (SQLException e) { 
            e.printStackTrace();
            return false;
        }
        return true;
    }

   /* CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
    [(col_name data_type [COMMENT col_comment], ...)]
    [COMMENT table_comment]
    [PARTITIONED BY (col_name data_type
      [COMMENT col_comment], ...)]
    [CLUSTERED BY (col_name, col_name, ...)
    [SORTED BY (col_name [ASC|DESC], ...)]
    INTO num_buckets BUCKETS]
    [ROW FORMAT row_format]
    [STORED AS file_format]
    [LOCATION hdfs_path]*/
    public boolean createTableByParams(String tableName,String  params,String partitionedId,String clusteredId ){
        String properties ="";
        String[] objects = params.split(",");
        for (int i = 0; i < objects.length; i++) {
            properties += objects[i]  +" string,";
        }
        properties = properties.substring(0, properties.length()-1);
        String sql =" create table " + tableName + " ("+ properties +") "
                +" comment '"+tableName+"' "
               // +" PARTITIONED BY ("+partitionedId+" string) "
                +" clustered by ("+clusteredId+") into 2 buckets "
                + " row format  delimited fields terminated by ','  "
               // +" stored as orc "
                +" TBLPROPERTIES ('transactional'='true') "
                ;
        System.out.println(sql);
        return execute(sql);
    }
  
    
    @Override
    public boolean dropTable(String sql) { 
        try {
            stmt.execute(sql);
        } catch (SQLException e) { 
            e.printStackTrace();
            return false;
        }
        return true;
    }
    
    public boolean dropTableByName(String tableName) { 
        String sql ="drop table if exists " + tableName; 
        return execute(sql);
    }
   
    
    public boolean execute(String sql) { 
        try {
            stmt.execute(sql);
        } catch (SQLException e) { 
            e.printStackTrace();
            return false;
        }
        return true;
    }

    
    
    public Statement getStmt() {
        return stmt;
    }

    public ResultSet getRes() {
        return res;
    }

    public Connection getCon() {
        return con;
    }

    public HiveSqlDateDefineLanguage setStmt(Statement stmt) {
        this.stmt = stmt;
        return this;
    }

    public HiveSqlDateDefineLanguage setRes(ResultSet res) {
        this.res = res;
        return this;
    }

    public HiveSqlDateDefineLanguage setCon(Connection con) {
        this.con = con;
        return this;
    }

    @Override
    public boolean loadSQL(String tableName, String hdfsPath) { 
        String sql = "LOAD DATA  INPATH '"+hdfsPath+"' OVERWRITE INTO TABLE "+tableName;
        return execute(sql);
       
    }

    @Override
    public boolean loadLocalSQL(String tableName, String localPath) { 
        String sql = "LOAD DATA local INPATH '"+localPath+"' OVERWRITE INTO TABLE "+tableName;
        return execute(sql);
    }

  
    
}

 

public abstract class HiveSqlDateManageLanguage extends SqlEntiyFormat<TerminalInfo> implements SqlDateManageLanguageInterface<TerminalInfo>  {

    private Statement stmt;
    private ResultSet res;
    private Connection con;


  
    
    

    @Override
    public List<TerminalInfo> findAll(String tableName) {
        try {
            res = stmt.executeQuery("select * from  " +tableName);
            List< TerminalInfo> list = formate(res);
            return list;
        } catch (SQLException e) { 
        }
        return null;
    }

    @Override
    public TerminalInfo findOne(String key, String value) {
        return null;
    }

    @Override
    public TerminalInfo findOne(String sql) {
        return null;
    }

    @Override
    public List<TerminalInfo> findAllBySql(String sql) {

        return null;
    }

    @Override
    public boolean update(String sql) {
        return false;
    }

    @Override
    public boolean delete(String sql) {
        return false;
    }

    @Override
    public boolean insert(String sql) {
        return false;
    }

    @Override
    public boolean insert(TerminalInfo t) {
        return false;
    }

    
    
    
    
    
    
    
    public Statement getStmt() {
        return stmt;
    }

    public ResultSet getRes() {
        return res;
    }

    public Connection getCon() {
        return con;
    }

    public HiveSqlDateManageLanguage setStmt(Statement stmt) {
        this.stmt = stmt;
        return this;
    }

    public HiveSqlDateManageLanguage setRes(ResultSet res) {
        this.res = res;
        return this;
    }

    public HiveSqlDateManageLanguage setCon(Connection con) {
        this.con = con;
        return this;
    }
    
}

 

 

public class TermialHiveSqlDMLOperator extends HiveSqlDateManageLanguage{

    @Override
    public void sqlMapper(ResultSet res, List<TerminalInfo> list) throws SQLException {
           TerminalInfo entity = new TerminalInfo();
           entity
           .setAppId(res.getString(1))
           .setDeviceMac(res.getString(2))
           .setDeviceId(res.getString(3))
           .setDeviceToken(res.getString(4))
           .setDeviceImsi(res.getString(5))
           .setDeviceModel(res.getString(6))
           .setDeviceManufacture(res.getString(7))
           .setChannel(res.getString(8))
           .setAppKey(res.getString(9))
           .setUserId(res.getString(10))
           .setAppVersion(res.getString(1))
           .setVersionCode(res.getString(12))
           .setSdkType(res.getString(13))
           .setSdkVersion(res.getString(14))
           .setOs(res.getString(15))
           .setCountry(res.getString(16))
           .setLanguage(res.getString(17))
           .setTimezone(res.getString(18))
           .setResolution(res.getString(19))
           .setAccess(res.getString(20))
           .setAccessSubtype(res.getString(21))
           .setCarrier(res.getString(22))
           .setCpu(res.getString(23)) 
                 ;
           list.add(entity); 
    }
        
}

 

public interface SqlLoadData { 
    
    public  boolean loadSQL(String tableName,String hdfsPath);
    
    public  boolean loadLocalSQL(String tableName,String localPath);

}

 

public interface SqlMapper<T> {
    public  void sqlMapper(ResultSet res , List< T> list)  throws SQLException;
    
}

 

 

public abstract  class SqlEntiyFormat<T> implements SqlMapper<T>{

    public   List<T> formate( ResultSet res) throws SQLException{ 
        List< T> list = new ArrayList<T>();
        while (res.next()) { 
            sqlMapper(res, list);
        }
        return list;
    }

    

    
  
}

 

public interface SqlDateManageLanguageInterface<T> {

    
    
    public List<T>  findAll(String tableName);
    
    public T findOne(String key ,String value);
    
    public T findOne (String sql);
    
    public List<T>  findAllBySql (String sql);
    
    public boolean  update (String sql);
    
    public boolean  delete (String sql);
    
    public boolean insert(String sql);
    
    public boolean insert(T t); 
    
    
}

 

/**
 * @Type SqlDateDefineLanguageInterface.java
 * @Desc    CREATE DATABASE - 创建新数据库
            ALTER DATABASE - 修改数据库
            CREATE TABLE - 创建新表
            ALTER TABLE - 变更(改变)数据库表
            DROP TABLE - 删除表
            CREATE INDEX - 创建索引(搜索键)
            DROP INDEX - 删除索引
 * @author hadoop
 * @date 2016年12月29日 下午2:54:34
 * @version 
 */
public interface SqlDateDefineLanguageInterface {

    public boolean createDatabase(String sql);
    
    public boolean createTable(String sql);

    public boolean dropTable(String sql);
    
    public boolean dropTableByName(String tableName);
}

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 谢谢您的赞助,我会做的更好!

 

 

 

 

 

 

 

 

 

 

  • 大小: 24.6 KB
分享到:
评论

相关推荐

    用于hive的实例

    本文将通过一个具体的Java与Hive结合的实例,深入讲解如何利用Java API进行Hive的操作,以加深对Hive语句的理解。 首先,要使用Java与Hive交互,我们需要引入Hive的JDBC驱动。在项目中,可以通过Maven或Gradle添加...

    hive影评案例.zip

    标题中的“hive影评案例.zip”表明这是一个关于使用Hive处理电影评论数据的示例。Hive是基于Hadoop的数据仓库工具,它允许用户通过SQL(HQL,Hive SQL)查询分布式存储的大数据集。这个压缩包可能包含了用于分析用户...

    java操作Hive源码之HiveJDBC实例(mysql数据库)

    本实例将聚焦于如何使用Java和HiveJDBC来操作基于MySQL的Hive元数据存储。以下是一份详细的步骤指南和相关知识点解释: 1. **HiveJDBC简介**: HiveJDBC是Hive提供的一种JDBC驱动,使得任何支持JDBC的应用程序,如...

    hive的udf功能

    大数据的hive资源的详细代码设计以及分享,望博友相互交流

    JDBC连接Hive实例

    在大数据处理领域,Hive是一个基于Hadoop的数据仓库工具,它可以将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,使得用户可以使用SQL语句对存储在Hadoop集群上的大规模数据进行分析和处理。JDBC(Java ...

    快捷删除hive表的工具

    在IT行业中,尤其是在大数据处理领域,Hive是一个广泛使用的数据仓库工具,它允许用户通过SQL-like查询语言(HQL)来处理存储在分布式文件系统中的大规模数据。然而,当面对大量不再需要的Hive表时,手动删除不仅...

    Scala代码积累之spark streaming kafka 数据存入到hive源码实例

    Scala代码积累之spark streaming kafka 数据存入到hive源码实例,Scala代码积累之spark streaming kafka 数据存入到hive源码实例。

    大数据小型实战项目源码之Hive 通过日期计算星座实例

    本实战项目是关于如何利用Hive通过日期来计算星座的一个实例,旨在帮助学习者更好地理解和应用Hive进行实际的数据处理任务。 首先,我们需要了解Hive的基本概念。Hive是由Facebook开发并开源的,基于Hadoop的数据...

    大数据技术之Hive - 副本.doc

    《大数据技术之Hive——从入门到精通》 Hive,作为Facebook开源的大数据处理工具,主要用于处理海量的结构化日志数据统计。它是一种基于Hadoop的数据仓库工具,允许用户通过类SQL语法进行数据查询和分析。Hive的...

    HIVE-分桶表的详解和创建实例.docx

    ### HIVE-分桶表的详解与创建实例 #### 一、Hive 分桶表概述 在Hive中,为了提高查询效率,特别是在大数据场景下处理海量数据时,Hive引入了分桶(bucketing)的概念。分桶是在表级别进行的一种优化手段,它通过将表...

    大数据 hive 实战数据

    在大数据处理领域,Hive是一个极其重要的工具,它被广泛应用于大数据分析和数据仓库操作。本实战数据集主要涉及两个核心部分:`video`数据和`user`数据,这些都是构建大数据分析模型的基础元素。让我们深入探讨一下...

    Hive驱动1.1.0.zip

    在DataGrip这样的专业数据库IDE中,Hive驱动是建立与Hive实例连接的必要部分。DataGrip是JetBrains公司推出的一款强大的数据库和SQL IDE,支持多种数据库管理系统,包括Hive。 要使用DataGrip连接到Hive 1.1.0,你...

    eclipse集成hadoop+spark+hive开发源码实例

    在Windows操作系统中,Eclipse是一款广泛使用的Java集成开发环境(IDE),它对于开发分布式计算框架如Hadoop、Spark以及数据仓库工具Hive来说,是非常有用的。本教程将深入讲解如何在Eclipse中集成这些组件,以创建...

    HIVE安装及详解

    "HIVE安装及详解" HIVE是一种基于Hadoop的数据仓库工具,主要用于处理和分析大规模数据。下面是关于HIVE的安装及详解。 HIVE基本概念 HIVE是什么?HIVE是一种数据仓库工具,主要用于处理和分析大规模数据。它将...

    Hive_JDBC.zip_hive java_hive jdbc_hive jdbc pom_java hive_maven连

    在大数据处理领域,Apache Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL(HQL,Hive Query ...通过这个实例,你现在已经具备了使用Hive JDBC的基础知识,可以进一步探索更高级的Hive和Java集成技术。

    Ambari下Hive3.0升级到Hive4.0

    在大数据领域,Apache Ambari 是一个用于 Hadoop 集群管理和监控的开源工具,而 Hive 是一个基于 Hadoop 的数据仓库系统,用于处理和分析大规模数据集。本话题聚焦于如何在 Ambari 环境下将 Hive 3.0 升级到 Hive ...

    hive相关jar包

    在大数据处理领域,Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL(HQL,Hive Query Language)查询和管理存储在Hadoop分布式文件系统(HDFS)中的大量数据。Hive提供了数据整合、元数据管理、查询和分析...

    Hive函数及语法说明

    Hive 函数及语法说明 Hive 是一个基于 Hadoop 的数据仓库工具,能够提供高效的数据查询和分析功能。Hive 的函数和语法是其核心组件之一,本文将对 Hive 的函数和语法进行详细的说明。 内置函数 Hive提供了一些...

    Hive3.1.2编译源码

    使用hive3.1.2和spark3.0.0配置hive on spark的时候,发现官方下载的hive3.1.2和spark3.0.0不兼容,hive3.1.2对应的版本是spark2.3.0,而spark3.0.0对应的hadoop版本是hadoop2.6或hadoop2.7。 所以,如果想要使用高...

    apache-hive-2.3.9-bin.tar大数据HIVE.zip

    元数据可以存储在本地MySQL或远程数据库中,以便多个Hive实例共享。 3. **Hive SQL(HQL)**:HQL是Hive提供的SQL方言,用于查询和管理数据。它支持SELECT、INSERT、UPDATE、DELETE等基本操作,以及JOIN、GROUP BY...

Global site tag (gtag.js) - Google Analytics