`

hive将日志导入hbase使其主键自增长方案

阅读更多
参考:
http://www.cnblogs.com/lion.net/p/3932741.html
http://www.linuxidc.com/Linux/2013-11/92556.htm

第一步:如果查询hive数据需要添加hive-contrib.jar支持。

add jar /opt/cloudera/parcels/CDH-5.5.4-1.cdh5.5.4.p0.9/lib/hive/lib/hive-contrib.jar;

第二步:Hive的日志表创建,并同步到Hbase中。
1) 创建自增长ID的java类UDFRowSequence.java,并添加到Hive环境中。
在Eclipse中创建Maven项目,然后使用Maven将项目打包成Jar文件,过程中需要引入hadoop-common-2.2.0.jar、hive-exec-0.13.1.jar这两个文件。然后导出打成jar文件hive_udf.jar.

package org.rowsequence;

import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.hive.ql.udf.UDFType;
import org.apache.hadoop.io.LongWritable;

/**
* UDFRowSequence.
*/
@Description(name = "row_sequence",
    value = "_FUNC_() - Returns a generated row sequence number starting from 1")
@UDFType(deterministic = false)
public class RowSequence extends UDF {
private LongWritable result = new LongWritable();

  public RowSequence() {
    result.set(0);
  }

  public LongWritable evaluate() {
    result.set(result.get() + 1);
    return result;
  }
}


2) 在Hive中创建日志表
然后将我们自定义的hive_udf.jar添加到Hive运行环境中

hive> ADD JAR /home/hadoop/hive-0.13.1/lib/idoall.org-0.0.1-SNAPSHOT-jar-with-dependencies.jar;

接下来执行创建序列化自增主键函数

hive>create temporary function row_sequence as 'org.rowsequence.RowSequence';

接下来执行在Hive中创建收集Nginx的日志表(nginx_accesslog)

hive>create table nginx_accesslog (ipaddress STRING, identd STRING, user STRING,finishtime STRING,requestline string, returncode INT, size INT,referer string,agent string) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDe'WITH SERDEPROPERTIES ('serialization.format'='org.apache.hadoop.hive.serde2.thrift.TCTLSeparatedProtocol','quote.delim'='("|\\[|\\])','field.delim'=' ','serialization.null.format'='-')STORED AS TEXTFILE location '/user/hive/warehouse/nginxlog';

接下来将nginx日志上传至/opt下。

接着将log日志导入hive中。

hive>load data local inpath '/opt/access_log' overwrite into table apachelog;


3) 在Hive中创建Hbase可以识别的表,这时在Hbase中,可以看到h2b_nginx_accesslog表自动创建了

hive>CREATE TABLE h2b_nginx_accesslog(key int,ipaddress string,identd string,user string,finishtime string,requestline string,returncode string,size string, referer string,agent string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,log:ipaddress,log:identd,log:user,log:finishtime,log:requestline,log:returncode,log:size,log:referer,log:agent") TBLPROPERTIES ("hbase.table.name" = "h2b_nginx_accesslog");

4) 将Hive的日志表(nginx_accesslog)导入到表(h2b_nginx_accesslog)中,会自动同步到hbase

insert overwrite table h2b_nginx_accesslog select a.* from (select row_sequence(), ipaddress, identd, user, finishtime, requestline, returncode, size, referer, agent from nginx_accesslog) a;
分享到:
评论

相关推荐

    Hive数据导入HBase的方法.docx

    这种方法适用于数据量不大的情况(小于 4TB),通过 Hive 创建一个关联 HBase 表的表,可以将数据从 Hive 导入到 HBase 中。 首先,需要创建一个 Hive 表,关联到 HBase 表,并指定 Hive schema 到 HBase schema 的...

    hive和hbase整合

    为了使Hive能够与HBase交互,我们需要在Hive的配置文件`hive-site.xml`中添加相关的JAR路径,以便Hive能够识别HBase的相关库。配置如下: ```xml <name>hive.aux.jars.path <value>file:///usr/lib/hive/lib/...

    Hive、MySQL、HBase数据互导

    【Hive、MySQL、HBase数据互导】是大数据领域常见的数据处理操作,涉及三个不同的数据存储系统。Hive是一个基于Hadoop的数据仓库工具,它允许使用类SQL的查询语言HiveQL对大规模数据进行批处理和分析。MySQL是一种...

    java解决hive快速导数据到Hbase代码

    本文将详细讨论如何使用Java编程语言实现从Hive到HBase的快速数据导入方案。 首先,Hive是一个基于Hadoop的数据仓库工具,它可以将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,适合大规模数据的离线...

    HIVE和HBASE的整合

    2. 数据存储:HIVE可以将数据存储在HBASE中,并且可以使用HBASE的高性能和高可用性特点来存储大量数据。 3. 数据整合:HIVE可以将来自不同数据源的数据整合到一起,实现数据的一致性和完整性。 在实现HIVE和HBASE...

    hive与hbase整合经验谈

    在大数据处理领域,Hive和HBase都是广泛使用的工具,各有其特定的优势。Hive作为一个基于Hadoop的数据仓库工具,适合于数据批处理和分析,而HBase则是一款分布式、高性能的NoSQL数据库,适用于实时数据查询。本文将...

    浅谈Hive vs. HBase

    ### Hive与HBase的核心知识点详解 #### 一、Hive概览 **1.1 定义** Apache Hive 是一个建立在 Hadoop 上的数据仓库工具,它为在大规模数据集上进行复杂的查询提供了便利。Hive 的核心设计是让用户能够通过类似 SQL...

    mapreduce方式入库hbase hive hdfs

    mapreduce方式入库hbase hive hdfs,速度很快,里面详细讲述了代码的编写过程,值得下载

    hive-hbase-handler-1.2.1.jar

    被编译的hive-hbase-handler-1.2.1.jar,用于在Hive中创建关联HBase表的jar,解决创建Hive关联HBase时报FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoop....

    zookeeper+hadoop+hbase+hive(集成hbase)安装部署教程(超详细).docx

    jdk1.8.0_131、apache-zookeeper-3.8.0、hadoop-3.3.2、hbase-2.4.12 mysql5.7.38、mysql jdbc驱动mysql-connector-java-8.0.8-dmr-bin.jar、 apache-hive-3.1.3 2.本文软件均安装在自建的目录/export/server/下 ...

    hive2.0+开启审计日志.pdf

    创建一个名为`HiveMetaStore`的logger,并将其级别设置为`INFO`,然后将`DRFB` Appender关联到这个logger,以便审计日志被写入`DRFB`。 ```properties logger.HiveMetaStore.name = org.apache.hadoop.hive....

    Hadoop,Hive,Hbase等框架详解

    该文档保护了目前比较流行的大数据平台的原理过程梳理。Hadoop,Hive,Hbase,Spark,MapReduce,Storm

    建立Hive和Hbase的映射关系,通过Spark将Hive表中数据导入ClickHouse

    本话题关注的是如何建立Hive与HBase之间的映射关系,并利用Spark将Hive中的数据高效地导入到ClickHouse数据库。以下将详细介绍这一过程的关键步骤和涉及的技术点。 首先,Hive是基于Hadoop的数据仓库工具,用于存储...

    hive0.8.1和hbase0.92.0集成的hive-hbase-handler.Jar包

    hive0.8.1和hbase0.92.0集成的hive-hbase-handler.Jar包,里面包含:hbase-0.92.0.jar、hbase-0.92.0-tests.jar、hive-hbase-handler-0.9.0-SNAPSHOT.jar。经测试没有问题。

    HIVE和HBASE区别

    "HIVE和HBASE区别" HIVE和HBASE是两种基于Hadoop的不同技术,分别是数据仓库和Key/Value系统。它们之间有很多区别,包括设计理念、应用场景、查询语言等方面。 HIVE HIVE是一个构建在Hadoop基础设施之上的数据...

    大数据-数据迁移-hive、hbase、kudu迁移

    本文档详细记录了一次从自建Hadoop集群到华为云MRS(Managed Service for Big Data)的大规模数据迁移项目,涉及到了Hive、Kudu和HBase这三种不同类型的数据存储系统。以下是针对这些系统的迁移策略、流程和解决方案...

    hive和HBASE.zip

    - 使用Hive将数据写入HBase,通常通过INSERT INTO或LOAD DATA命令,需确保Hive表结构与HBase表结构匹配。 - 从HBase查询数据到Hive,利用Hive的SELECT语句进行数据分析。 5. **查询优化** - 理解HBase的Region...

    hadoop,hbase,hive版本整合兼容性最全,最详细说明【适用于任何版本】

    本文将介绍Hadoop、HBase、Hive以及ZooKeeper的版本整合兼容性,以及如何根据版本找到兼容性信息。 首先,Hadoop是一个开源的分布式存储和计算框架,它由HDFS和MapReduce两部分组成。HDFS用于存储大数据,而...

Global site tag (gtag.js) - Google Analytics