首页 > 其他分享 >DataX HiveReader

DataX HiveReader

时间:2024-06-03 14:00:58浏览次数:29  
标签:hdfs 必选 pay hive HiveReader DataX 默认值 stage

DataX HiveReader

来源:github-datax-hivereader


1 快速介绍

Hivereader插件:从Hive表读取数据

2 实现原理

实现方式是:根据配置的QuerySql,通过将查询结果保存到一张新的临时hive表中这种方式;然后获取临时表的hdfs文件地址,然后读取文件到缓冲区,最后删除临时的表。

3 功能说明

Hivereader插件:从Hive表读取数据

  • 使用QuerySql方式取Hive表数据
    • 即可取整个数据,也可取部分数据
    • 支持取选取指定列或分区列
    • 支持同时取多个分区的数据
    • HdfsReader只能取整个表或整个分区的所有数据
  • 支持读取任何格式与压缩的Hive的源表;

3.1 配置样例

job.json

{
  "job": {
    "setting": {
      "speed": {
        "channel":1
      }
    },
    "content": [
      {
        "reader": {
          "name": "hivereader",
          "parameter": {
              "hiveSql": [
                    "select username,telephone,mail from mysql_to_hive;"
               ],
              "defaultFS": "hdfs://xxx:port"
           }
        },
        "writer": {
          ......
        }
        }
    ]
  }

}

3.2 参数说明

  • hiveSql

    • 描述:Hive上的查询语句QuerySql
    • 必选:是
    • 默认值:无
  • defaultFS

    • 描述:Hadoop hdfs文件系统namenode节点地址。示例:hdfs://xxxxxxxxxx:8020
    • 必选:是
    • 默认值:无
  • tempDatabase

    • 描述:hive临时表存放的database(需写权限); 建议根据实际场景设置
    • 必选:否
    • 默认值:default
  • tempDatabasePath

    • 描述:hive临时表所在数据库的hdfs路径(需写权限);建议根据实际场景设置
    • 必选:否
    • 默认值:/user/hive/warehouse/
  • fieldDelimiter

    • 描述:字段分隔符,hive临时表使用,建议不设置
    • 必选:否
    • 默认值:\\u0001(json里面需要写成'\u0001'),可选示例'\\t' , ',' 等;注意,这与HdfsReader不一样
  • nullFormat

    • 描述:文本文件中无法使用标准字符串定义null(空指针),nullFormat可定义哪些字符串可以表示为null。

      例如如果用户配置: nullFormat:"\\N",那么如果源头数据是"\N",DataX视作null字段。

    • 必选:否

    • 默认值:\\N

  • hive_sql_set

    • 描述:hive临时表执行的前置hive set语句;示例,设置队列set tez.queue.name=root.xxxxxxx;
    • 必选:否
    • 默认值:空
  • haveKerberos

    • 描述:是否进行Kerberos认证(true/false)
    • 必选:否
    • 默认值:空
  • kerberosKeytabFilePath

    • 描述:Kerberos认证 keytab文件路径,绝对路径,如/etc/security/keytabs/xxxx_user.keytab
    • 必选:否
    • 默认值:空
  • kerberosPrincipal

    • 描述:Kerberos认证Principal名,如xxxx/[email protected]
    • 必选:否
    • 默认值:空
  • hadoopConfig

    • 描述:hadoopConfig里可以配置与Hadoop相关的一些高级参数,比如HA的配置。
    • 必选:否
    • 默认值:空

3.3 环境准备

  • 执行datax任务的机器要按照hive,并且配置好环境变量
  • tempDatabase和tempDatabase需要有“写”权限

4 性能报告

4.1 环境准备

4.1.3 测试环境

已在以下测试环境测试通过:

  • 测试环境1

    CDH 5.7.0 (hive 1.1.1 , hadoop 2.7.1)

  • 测试环境2

    HDP 3.1.4 (hive 3.1.0 , hadoop 3.1.1 )

4.2 测试报告

  • 场景一

    json只传必选参数,其他为默认参数值

    {
      "job": {
        "setting": {
          "speed": {
            "channel":1
          }
        },
        "content": [
          {
            "reader": {
              "name": "hivereader",
              "parameter": {
                  "hiveSql": [
    "select id,pay_decimal,pay_str,pay_double from stage.stage_md_test limit 10;"
                   ],
                  "defaultFS": "hdfs://quickstart.cloudera:8020"
               }
            },
    "writer":{"name": "streamwriter",
              "parameter": {
                "encoding": "UTF-8",
                "print": true
             
                        }
                    }
            }
        ]
      }
    
    }
    
  • 场景二

​ json传了默认的参数,加部分可选参数(临时表database与hdfs路径)

{
  "job": {
    "setting": {
      "speed": {
        "channel":1
      }
    },
    "content": [
      {
        "reader": {
          "name": "hivereader",
          "parameter": {
              "hiveSql": [
                    "select id,pay_decimal,pay_str,pay_double from stage.stage_md_test limit 10;"
               ],
              "defaultFS": "hdfs://quickstart.cloudera:8020",
			  "tempDatabase":"stage",
			  "tempDatabasePath":"/user/hive/warehouse/stage.db/"

           }
        },
"writer":{"name": "streamwriter",
          "parameter": {
            "encoding": "UTF-8",
            "print": true
         
                    }
                }
        }
    ]
  }

}
  • 场景三

    json传入所有的可选参数,注意fieldDelimiter传入的'\001'需要写成'\\u0001'

    {
      "job": {
        "setting": {
          "speed": {
            "channel":1
          }
        },
        "content": [
          {
            "reader": {
              "name": "hivereader",
              "parameter": {
                  "hiveSql": [
                        "select id,pay_decimal,pay_str,pay_double from stage.stage_md_test limit 10;"
                   ],
                  "defaultFS": "hdfs://quickstart.cloudera:8020",
    			  "tempDatabase":"stage",
    			  "tempDatabasePath":"/user/hive/warehouse/stage.db/",
    			  "fieldDelimiter":"\\u0001",
                  "nullFormat":"\\N",
                  "haveKerberos":"true",
                  "kerberosKeytabFilePath":"/etc/security/keytabs/xxxx_user.keytab",
                  "kerberosPrincipal":"xxxx_user@HADOOP_CLUSTER_XXXXX.COM",
                  "hadoopConfig":{
                   "dfs.nameservices": "hadoop_cluster",
                   "dfs.ha.namenodes.hadoop_cluster": "nn1,nn2",
                   "dfs.namenode.rpc-address.hadoop_cluster.nn1": "IPXXXXXXX01:8020",
                   "dfs.namenode.rpc-address.hadoop_cluster.nn2": "IPXXXXXXX02:8020",
                   "dfs.client.failover.proxy.provider.hadoop_cluster": "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"},
               }
            },
    "writer":{"name": "streamwriter",
              "parameter": {
                "encoding": "UTF-8",
                "print": true
             
                        }
                    }
            }
        ]
      }
    
    }
    

标签:hdfs,必选,pay,hive,HiveReader,DataX,默认值,stage
From: https://www.cnblogs.com/kingron/p/18228748

相关文章

  • datax 从 hive 同步数据配置
    DataXHiveReader1快速介绍Hivereader插件:从Hive表读取数据2实现原理实现方式是:根据配置的QuerySql,通过将查询结果保存到一张新的临时hive表中这种方式;然后获取临时表的hdfs文件地址,然后读取文件到缓冲区,最后删除临时的表。3功能说明Hivereader插件:从Hive表读取数据......
  • datax 抽取hive表到doris
    datax读取hive表有两种方式,一种是读取hdfs文件路径HDFSReader,因为hive是存储在hdfs上。第二种是读取hive表RDBMSReader。HDFSReader{"job":{"setting":{"speed":{"channel":3},"......
  • 异构数据源同步之数据同步 → datax 再改造,开始触及源码
    开心一刻其实追女生,没那么复杂只要你花心思,花时间,陪她聊天,带她吃好吃的,耍好玩的,买好看的慢慢你就会发现什么叫做打水漂不说了,我要去陪她看电影了前情回顾异构数据源同步之数据同步→datax改造,有点意思主要讲到了2点去Python,直接在命令行用java命令来启动通过......
  • datax和datax-web时间问题处理(定时任务没有按指定时间触发、日志时间错误)
    datax-web和datax各种时间不准问题此文目的为解决日志输出中的时间不准确问题和datax-web定时任务触发时间不对的问题(以东八区为例),但首先要确认操作系统的时间和时区是正常的!!!。总体思路就是修改时区,修改三个文件:datax.py、datax-executor.sh、datax-admin.sh在对应的位置加上时......
  • 异构数据源同步之数据同步 → datax 改造,有点意思
    开心一刻去年在抖音里谈了个少妇,骗了我9万后来我发现了,她怕我报警她把她表妹介绍给我然后她表妹又骗了我7万DataXDataX是什么,有什么用,怎么用不做介绍,大家自行去官网(DataX)看,Gitee上也有(DataX)你们别不服,我这是为了逼迫你们去自学,是为了你们好!文档很详细,也是开源的,......
  • DataX将Oracle数据库数据同步到达梦数据库
    1.DataX3.0开源版本,rdbms里面默认是达梦7的驱动,因此,如果像链接达梦8需要替换驱动。需要将达梦8的驱动放在D:\datax\lib、D:\datax\plugin\reader\rdbmsreader\lib和D:\datax\plugin\reader\rdbmswriter\lib下D:\datax\plugin\reader\rdbmsreader\plugin.json和D:\datax\plugin\re......
  • 阿里DataX极简教程
    目录简介工作流程核心架构核心模块介绍DataX调度流程支持的数据实践下载环境执行流程引用简介DataX是一个数据同步工具,可以将数据从一个地方读取出来并以极快的速度写入另外一个地方。常见的如将mysql中的数据同步到另外一个mysql中,或者另外一个mongodb中。工作流程read:设置......
  • DataX将MySql数据库数据同步到Oracle数据库
    1.下载DataX并解压(本地环境安装有python)DataX/userGuid.mdatmaster·alibaba/DataX(github.com) job文件夹下存放数据同步的json脚本{"job":{"setting":{"speed":{"channel":1}......
  • 阿里云开源离线同步工具DataX3.0介绍
    一.DataX3.0概览​DataX是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 设计理念为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据......
  • DataX二次开发详解-Kingbasees86Reader、Kingbasees86Writer插件
     一、前提国产数据库的崛起元年,不得不提人大金仓(Kingbase)、南大通用数据库(Gbase)、达梦数据库(DM)、华为数据库(GaussDB)、阿里数据库(Oceanbase)等,此文章介绍采用datax作为同步人大金仓Kingbase86数据库的工具。目前github上的datax版本功能仅支持Kingbase82系列产品。而项目上如果要......