`
bupt04406
  • 浏览: 347366 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Hive tag

    博客分类:
  • Hive
阅读更多
ExecReducer{
   private boolean isTagged = false;
  
   @Override
   public void configure(JobConf job) {
        MapredWork gWork = Utilities.getMapRedWork(job);
        isTagged = gWork.getNeedsTagging(); //初始化
   }
}

//只有在reducer是JoinOperator.class的时候才会设置needsTagging为true
org.apache.hadoop.hive.ql.plan.MapredWork
  public void setNeedsTagging(boolean needsTagging) {
    this.needsTagging = needsTagging;
  }
        if (reducer.getClass() == JoinOperator.class) {
          plan.setNeedsTagging(true);
        }

org.apache.hadoop.hive.ql.exec.ExecReducer.reduce(Object key, Iterator values, OutputCollector output,
      Reporter reporter){
      BytesWritable keyWritable = (BytesWritable) key;
      tag.set((byte) 0); //默认tag为0
      if (isTagged) { // tag上了
        // remove the tag
        int size = keyWritable.getSize() - 1; // keyWritable的长度
        tag.set(keyWritable.get()[size]); //最后一个byte是tag的值。
        keyWritable.setSize(size);
      }
}

join1.q.out:在一个MR中计算两个表的join,tag为0,1,在reduce阶段就可以区分一个row是来自哪个table。
EXPLAIN
FROM src src1 JOIN src src2 ON (src1.key = src2.key)
INSERT OVERWRITE TABLE dest_j1 SELECT src1.key, src2.value
STAGE DEPENDENCIES:
  Stage-1 is a root stage
  Stage-0 depends on stages: Stage-1

STAGE PLANS:
  Stage: Stage-1
    Map Reduce
      Alias -> Map Operator Tree:
        src1
          TableScan
            alias: src1
            Reduce Output Operator
              key expressions:
                    expr: key
                    type: string
              sort order: +
              Map-reduce partition columns:
                    expr: key
                    type: string
              tag: 0
              value expressions:
                    expr: key
                    type: string
        src2
          TableScan
            alias: src2
            Reduce Output Operator
              key expressions:
                    expr: key
                    type: string
              sort order: +
              Map-reduce partition columns:
                    expr: key
                    type: string
              tag: 1
              value expressions:
                    expr: value
                    type: string
      Reduce Operator Tree:
        Join Operator
          condition map:
               Inner Join 0 to 1
          condition expressions:
            0 {VALUE._col0}
            1 {VALUE._col1}
          handleSkewJoin: false
          outputColumnNames: _col0, _col3
          Select Operator
            expressions:
                  expr: _col0
                  type: string
                  expr: _col3
                  type: string
            outputColumnNames: _col0, _col1
            Select Operator
              expressions:
                    expr: UDFToInteger(_col0)
                    type: int
                    expr: _col1
                    type: string
              outputColumnNames: _col0, _col1
              File Output Operator
                compressed: false
                GlobalTableId: 1
                table:
                    input format: org.apache.hadoop.mapred.TextInputFormat
                    output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
                    serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
                    name: dest_j1

  Stage: Stage-0
    Move Operator
      tables:
          replace: true
          table:
              input format: org.apache.hadoop.mapred.TextInputFormat
              output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
              serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
              name: dest_j1


join3.q.out:在一个MR中计算三个表的Join,tag为0,1,2,在reduce阶段就可以区分一个row是来自哪个table。
EXPLAIN
FROM src src1 JOIN src src2 ON (src1.key = src2.key) JOIN src src3 ON (src1.key = src3.key)
INSERT OVERWRITE TABLE dest1 SELECT src1.key, src3.value

STAGE DEPENDENCIES:
  Stage-1 is a root stage
  Stage-0 depends on stages: Stage-1

STAGE PLANS:
  Stage: Stage-1
    Map Reduce
      Alias -> Map Operator Tree:
        src1
          TableScan
            alias: src1
            Reduce Output Operator
              key expressions:
                    expr: key
                    type: string
              sort order: +
              Map-reduce partition columns:
                    expr: key
                    type: string
              tag: 0
              value expressions:
                    expr: key
                    type: string
        src2
          TableScan
            alias: src2
            Reduce Output Operator
              key expressions:
                    expr: key
                    type: string
              sort order: +
              Map-reduce partition columns:
                    expr: key
                    type: string
              tag: 1
        src3
          TableScan
            alias: src3
            Reduce Output Operator
              key expressions:
                    expr: key
                    type: string
              sort order: +
              Map-reduce partition columns:
                    expr: key
                    type: string
              tag: 2
              value expressions:
                    expr: value
                    type: string
      Reduce Operator Tree:
        Join Operator
          condition map:
               Inner Join 0 to 1
               Inner Join 0 to 2
          condition expressions:
            0 {VALUE._col0}
            1
            2 {VALUE._col1}
          handleSkewJoin: false
          outputColumnNames: _col0, _col5
          Select Operator
            expressions:
                  expr: _col0
                  type: string
                  expr: _col5
                  type: string
            outputColumnNames: _col0, _col1
            Select Operator
              expressions:
                    expr: UDFToInteger(_col0)
                    type: int
                    expr: _col1
                    type: string
              outputColumnNames: _col0, _col1
              File Output Operator
                compressed: false
                GlobalTableId: 1
                table:
                    input format: org.apache.hadoop.mapred.TextInputFormat
                    output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
                    serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
                    name: dest1

  Stage: Stage-0
    Move Operator
      tables:
          replace: true
          table:
              input format: org.apache.hadoop.mapred.TextInputFormat
              output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
              serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
              name: dest1
分享到:
评论

相关推荐

    HDP3.1.5源码下载—hadoop hbase hive

    Hive-release-HDP-3.1.5.0-152-tag.tar.gz文件包含了Hive的源代码,这对于想要构建复杂查询逻辑、优化查询性能或扩展Hive功能的开发人员来说非常有价值。 Spark2是大数据处理的另一个关键组件,它在Hadoop生态系统...

    HiveSQL解析原理.docx

    - 在Map阶段,为来自不同表的数据打上标记(tag),这些标记会被添加到Map输出的Value中。 - 在Reduce阶段,根据标记来判断数据来源并进行相应的Join操作。 例如,假设我们要执行以下SQL查询: ```sql SELECT u.name,...

    hive中定义的复杂数据类型导入到es中问题总结.doc

    `huizhantags` array,score:bigint>> COMMENT 'tag json数组' ) ROW FORMAT SERDE 'org.elasticsearch.hadoop.hive.EsSerDe' STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler' WITH ...

    python 实现 hive中类似 lateral view explode的功能示例

    在大数据处理领域,Hive 是一个广泛使用的工具,它允许用户使用 SQL 语法查询和管理分布式存储的数据。在处理分隔符分隔的数组数据时,Hive 提供了一种称为 `lateral view` 的机制,配合 `explode` 函数可以将单一...

    java连接sqoop源码-docker-hive:docker-hive

    hive 的安装依赖于hadoop ,上节基于docker的hadoop安装参见 所以hive的安装是在hadoop的image基础上进行的。 第一步 完成hadoop的iamge构建 按照 完成hadoop 的image 构建 第二步 完成mysql的构建 1、采用mysql5.7...

    tag_ADFtag_ADF

    ADF 由多个组件组成,如Pig、Hive、Spark等,这些组件可以协同工作,以处理大规模数据集。 2. **核心组件**:ADF 的核心组件包括一个用户界面(UI)用于设计数据流,一个运行时引擎负责执行数据流,以及一个元数据...

    Android代码-recommendSys

    清洗后的结果数据,然后通过sqoop导入到数据库mysql中或者放入到hive中(web展现或者交给数据分析人员) 当天的数据:当日凌晨截至到统计时间点的数据 之前的历史数据:截至到今天凌晨的历史数据 实时处理...

    标准化idea代码格式化模板

    自动格式化注释的tag及描述,缩进对齐,使用tab进行缩进,让tag和描述在展现上更加优雅。该格式化模板,配合保存自动格式化,让你的代码更加符合规范,写出风格更加统一,更加优雅的代码。该模板是在阿里规范的基础...

    视频建站系统Pocle v2.6 简体中文 UTF-8.rar

    Fresh模板在视频列表页TAG不显示(IE6) Fresh模板播放页和专辑页的编辑按钮错误 Fresh模板频道页没有“查看该频道下所有专辑”的功能 Fresh模板播放页无法实现顶视频自动复制网址 Fresh模板专辑的视频管理页面...

    豆瓣电影爬虫案例

    self.crawl('https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%A7%91%E5%B9%BB&sort=recommend&page_limit=50&page_start=0', validate_cert=False, callback=self.index_page) ``` - **解析电影...

    ranger-2.1.0-tagsync.tar.gz

    标签同步(Tag Synchronization)是Apache Ranger 的一个重要特性,用于在不同数据源之间同步和分发安全标签。这些标签可以用于定义敏感级别、业务领域或其他元数据属性,帮助管理员高效地管理和应用访问控制策略。...

    ranger-2.0.0-SNAPSHOT-tagsync.tar.gz

    Tagsync是Ranger中一个关键的元数据管理组件,它的主要任务是保持不同数据源之间的标签(Tag)一致性。标签在大数据环境中被广泛用于数据分类和隐私保护,通过为数据集打上标签,可以轻松实现对敏感信息的访问控制。...

    之基于Java+大数据的定位电商用户画像实现精准营销项目源码.zip

    项目可能使用Hadoop进行大规模数据的分布式存储和计算,使用Spark进行实时或近实时的数据处理,以及使用Hive进行数据仓库建设,提供SQL查询能力。同时,可能会用到数据挖掘算法如关联规则、聚类等来挖掘用户行为模式...

    SDK无埋点技术介绍.pptx

    首先,整体架构包括Web配置页面、SDK通信服务器、配置服务器、探头服务、数据存储(如Kafka、MongoDB、HDFS、Hive和HBase)等。通信协议基于TCP层的长连接,确保实时性和双向交互,数据以JSON格式传输,通过加密和...

    如何从0到1构建用户画像系统.pdf

    * Hive * MySQL * Spark数据开发作业调度(ETL) * Crontab * Airflow 非技术内容 本文中还涉及到一些非技术内容,包括: * 数据分析如何做数据调研、对于需求方提出的标签如何结合数据情况给出相应的解决方案 * ...

    如何从0到1构建用户画像系统s240306.pptx

    - **Hive**:用于数据仓库的工具,提供了SQL-like的查询语言HQL,方便进行数据聚合分析。 - **MySQL**:作为关系型数据库,适用于存储结构化的用户标签数据。 - **Spark作业调度(ETL)**:利用Spark进行数据清洗、...

    Integrating+BitMap+Structure+deeply+inside+ClickHouse.pdf

    BitMap的压缩算法,如Roaring bitmap,进一步提高了空间效率和运算速度,使得Roaring在许多开源项目,如Apache Lucene、Solr、Elasticsearch、Druid、Spark、Hive和Kylin等中被广泛采用。 Bitmap的优势在于其高效的...

Global site tag (gtag.js) - Google Analytics