详情页标题前

阿里云大数据开发治理平台 DataWorksHive数据源-云淘科技

详情页1

Hive数据源为您提供读取和写入Hive双向通道的功能,本文为您介绍DataWorks的Hive数据同步的能力支持情况。

背景信息

Hive是基于Hadoop的数据仓库工具,用于解决海量结构化日志的数据统计。Hive可以将结构化的数据文件映射为一张表,并提供SQL查询功能。Hive的本质是一个SQL解析引擎,其底层通过MapReduce实现数据分析,使用HDFS存储处理的数据,将HQL转化为MapReduce程序并在Yarn上运行。

Hive Reader插件通过访问HiveMetastore服务,获取您配置的数据表的元数据信息。您可以基于HDFS文件和Hive JDBC两种方式读取数据:

  • 基于HDFS文件读取数据

    Hive Reader插件通过访问HiveMetastore服务,解析出您配置的数据表的HDFS文件存储路径、文件格式、分隔符等信息后,再通过读取HDFS文件的方式读取Hive中的表数据。

  • 基于Hive JDBC读取数据

    Hive Reader插件通过Hive JDBC客户端连接HiveServier2服务读取数据。Hive Reader支持通过where条件过滤数据,并支持直接通过SQL读取数据。

Hive Writer插件通过访问Hive Metastore服务,解析出您配置的数据表的HDFS文件存储路径、文件格式和分隔符等信息。通过读取HDFS文件的方式,从Hive写出数据至HDFS。再通过Hive JDBC客户端执行LOAD DATA SQL语句,加载HDFS文件中的数据至Hive表。

Hive Writer底层的逻辑和HDFS Writer插件一致,您可以在Hive Writer插件参数中配置HDFS Writer相关的参数,配置的参数会透传给HDFS Writer插件。

支持的版本

Hive插件支持的版本如下。

0.8.0
0.8.1
0.9.0
0.10.0
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
1.0.0
1.0.1
1.1.0
1.1.1
1.2.0
1.2.1
1.2.2
2.0.0
2.0.1
2.1.0
2.1.1
2.2.0
2.3.0
2.3.1
2.3.2
2.3.3
2.3.4
2.3.5
2.3.6
2.3.7
3.0.0
3.1.0
3.1.1
3.1.2
0.8.1-cdh4.0.0
0.8.1-cdh4.0.1
0.9.0-cdh4.1.0
0.9.0-cdh4.1.1
0.9.0-cdh4.1.2
0.9.0-cdh4.1.3
0.9.0-cdh4.1.4
0.9.0-cdh4.1.5
0.10.0-cdh4.2.0
0.10.0-cdh4.2.1
0.10.0-cdh4.2.2
0.10.0-cdh4.3.0
0.10.0-cdh4.3.1
0.10.0-cdh4.3.2
0.10.0-cdh4.4.0
0.10.0-cdh4.5.0
0.10.0-cdh4.5.0.1
0.10.0-cdh4.5.0.2
0.10.0-cdh4.6.0
0.10.0-cdh4.7.0
0.10.0-cdh4.7.1
0.12.0-cdh5.0.0
0.12.0-cdh5.0.1
0.12.0-cdh5.0.2
0.12.0-cdh5.0.3
0.12.0-cdh5.0.4
0.12.0-cdh5.0.5
0.12.0-cdh5.0.6
0.12.0-cdh5.1.0
0.12.0-cdh5.1.2
0.12.0-cdh5.1.3
0.12.0-cdh5.1.4
0.12.0-cdh5.1.5
0.13.1-cdh5.2.0
0.13.1-cdh5.2.1
0.13.1-cdh5.2.2
0.13.1-cdh5.2.3
0.13.1-cdh5.2.4
0.13.1-cdh5.2.5
0.13.1-cdh5.2.6
0.13.1-cdh5.3.0
0.13.1-cdh5.3.1
0.13.1-cdh5.3.2
0.13.1-cdh5.3.3
0.13.1-cdh5.3.4
0.13.1-cdh5.3.5
0.13.1-cdh5.3.6
0.13.1-cdh5.3.8
0.13.1-cdh5.3.9
0.13.1-cdh5.3.10
1.1.0-cdh5.3.6
1.1.0-cdh5.4.0
1.1.0-cdh5.4.1
1.1.0-cdh5.4.2
1.1.0-cdh5.4.3
1.1.0-cdh5.4.4
1.1.0-cdh5.4.5
1.1.0-cdh5.4.7
1.1.0-cdh5.4.8
1.1.0-cdh5.4.9
1.1.0-cdh5.4.10
1.1.0-cdh5.4.11
1.1.0-cdh5.5.0
1.1.0-cdh5.5.1
1.1.0-cdh5.5.2
1.1.0-cdh5.5.4
1.1.0-cdh5.5.5
1.1.0-cdh5.5.6
1.1.0-cdh5.6.0
1.1.0-cdh5.6.1
1.1.0-cdh5.7.0
1.1.0-cdh5.7.1
1.1.0-cdh5.7.2
1.1.0-cdh5.7.3
1.1.0-cdh5.7.4
1.1.0-cdh5.7.5
1.1.0-cdh5.7.6
1.1.0-cdh5.8.0
1.1.0-cdh5.8.2
1.1.0-cdh5.8.3
1.1.0-cdh5.8.4
1.1.0-cdh5.8.5
1.1.0-cdh5.9.0
1.1.0-cdh5.9.1
1.1.0-cdh5.9.2
1.1.0-cdh5.9.3
1.1.0-cdh5.10.0
1.1.0-cdh5.10.1
1.1.0-cdh5.10.2
1.1.0-cdh5.11.0
1.1.0-cdh5.11.1
1.1.0-cdh5.11.2
1.1.0-cdh5.12.0
1.1.0-cdh5.12.1
1.1.0-cdh5.12.2
1.1.0-cdh5.13.0
1.1.0-cdh5.13.1
1.1.0-cdh5.13.2
1.1.0-cdh5.13.3
1.1.0-cdh5.14.0
1.1.0-cdh5.14.2
1.1.0-cdh5.14.4
1.1.0-cdh5.15.0
1.1.0-cdh5.16.0
1.1.0-cdh5.16.2
1.1.0-cdh5.16.99
2.1.1-cdh6.1.1
2.1.1-cdh6.2.0
2.1.1-cdh6.2.1
2.1.1-cdh6.3.0
2.1.1-cdh6.3.1
2.1.1-cdh6.3.2
2.1.1-cdh6.3.3

使用限制

  • Hive数据源仅支持使用独享数据集成资源组。
  • 目前仅支持读取TextFile、ORCFile和ParquetFile三种格式的文件。
  • 使用数据集成向Hive集群进行离线同步的过程中,会在服务端侧产生临时文件,在同步任务执行完成时,会自动删除。您需要留意服务端HDFS目录文件数限制,避免非预期的文件数达到上限导致HDFS文件系统不可用,DataWorks平台无法保障文件数在HDFS目录允许范围内。说明 服务端可以通过修改dfs.namenode.fs-limits.max-directory-items参数,定义单个目录下不含递归的最大目录数或者文件数,默认值1048576,取值范围1~6400000。可以将HDFS的参数dfs.namenode.fs-limits.max-directory-items调大或者清理不需要的文件以规避此问题。
  • 访问Hive数据源时目前仅支持使用Kerberos身份认证方式,如果访问数据源时不需要进行身份认证,则新增数据源时特殊认证方式选择
  • 在DataWorks使用Kerberos认证身份访问Hive数据源时,如果HiveServer2与metastore均开启了kerberos认证,但是两者认证的principal存在不一致时,需要在扩展参数配置项做如下配置:
     {
    "hive.metastore.kerberos.principal": "your metastore principal"
    }

使用DLF的配置

如果您的Hive数据源元数据管理方式使用的是DLF方式,您需要在配置Hive数据源时扩展参数一栏中增加如下内容:

{"dlf.catalog.id" : "my_catalog_xxxx"}

其中my_catalog_xxxx是您在EMR的Hive配置参数dlf.catalog.id里对应的名称。

高可用HA配置

若您要同步的EMR Hive集群开启了高可用,您需要在配置Hive数据源时扩展参数一栏,配置HA的相关信息,格式如下。您可以在EMR控制台集群服务页面,获取相关配置值。

{
//HA的相关配置示例如下。
"dfs.nameservices":"testDfs",
"dfs.ha.namenodes.testDfs":"namenode1,namenode2",
"dfs.namenode.rpc-address.testDfs.namenode1": "",
"dfs.namenode.rpc-address.testDfs.namenode2": "",
"dfs.client.failover.proxy.provider.testDfs":"org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
//(可选)底层存储为OSS时,需在扩展参数中配置以下连接OSS服务所需的参数。
"fs.oss.accessKeyId":"",
"fs.oss.accessKeySecret":"",
"fs.oss.endpoint":"oss-cn--internal.aliyuncs.com"
}

OSS外表配置

当底层存储为OSS时,请注意以下问题:

  • defaultFS的配置请以oss://为前缀。例如,oss://bucketName。
  • 若您要同步的表为OSS外表,您需要在配置Hive数据源时扩展参数一栏配置OSS相关信息。
    {
        "fs.oss.accessKeyId":"",
        "fs.oss.accessKeySecret":"",
        "fs.oss.endpoint":"oss-cn--internal.aliyuncs.com"
    }
  • 若您要同步的表为OSS-HDFS外表,您需要在配置Hive数据源时扩展参数一栏配置OSS-HDFS的相关信息。
    {
        "fs.oss.accessKeyId":"",
        "fs.oss.accessKeySecret":"",
        "fs.oss.endpoint":"cn-.oss-dls.aliyuncs.com"
    }

支持的字段类型

离线读

类型分类 Hive数据类型
字符串类 CHAR、VARCHAR、STRING
整数类 TINYINT、SMALLINT、INT、INTEGER、BIGINT
浮点类 FLOAT、DOUBLE、DECIMAL
日期时间类 TIMESTAMP、DATE
布尔型 BOOLEAN

数据同步任务开发

Hive数据同步任务的配置入口和通用配置流程指导可参见下文的配置指导,详细的配置参数解释可在配置界面查看对应参数的文案提示。

创建数据源

在进行数据同步任务开发时,您需要在DataWorks上创建一个对应的数据源,操作流程请参见创建与管理数据源。

单表离线同步任务配置指导

  • 操作流程请参见通过向导模式配置离线同步任务、通过脚本模式配置离线同步任务。
  • 脚本模式配置的全量参数和脚本Demo请参见下文的附录:脚本Demo与参数说明。

整库离线读同步配置指导

操作流程请参见数据集成侧同步任务配置。

附录:脚本Demo与参数说明

附录:离线任务脚本配置方式

如果您配置离线任务时使用脚本模式的方式进行配置,您需要在任务脚本中按照脚本的统一格式要求编写脚本中的reader参数和writer参数,脚本模式的统一要求请参见通过脚本模式配置离线同步任务,以下为您介绍脚本模式下的数据源的Reader参数和Writer参数的指导详情。

Reader脚本Demo

您可以基于HDFS文件和Hive JDBC读取数据:

  • 基于HDFS文件读取数据
    {
        "type": "job",
        "steps": [
            {
                "stepType": "hive",
                "parameter": {
                    "partition": "pt1=a,pt2=b,pt3=c", //分区信息
                    "datasource": "hive_not_ha_****", //数据源名称
                    "column": [ //需要读取的字段列
                        "id",
                        "pt2",
                        "pt1"
                    ],
                    "readMode": "hdfs", //读取方式
                    "table": "part_table_1",
                    "hdfsUsername" : "hdfs",
                    "hivePartitionColumn": [
                        {
                          "type": "string",
                          "value": "分区名1"
                        },
                        {
                          "type": "string",
                          "value": "分区名2"
                         }
                   ]
                },
                "name": "Reader",
                "category": "reader"
            },
            {
                "stepType": "hive",
                "parameter": {
                },
                "name": "Writer",
                "category": "writer"
            }
        ],
        "version": "2.0",
        "order": {
            "hops": [
                {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        },
        "setting": {
            "errorLimit": {
                "record": "" //错误记录数
            },
            "speed": {
                "concurrent": 2, //作业并发数
                "throttle": true,//当throttle值为false时,mbps参数不生效,表示不限流;当throttle值为true时,表示限流。
                "mbps":"12"//限流
            }
        }
    }
  • 基于Hive JDBC读取数据
    {
        "type": "job",
        "steps": [
            {
                "stepType": "hive",
                "parameter": {
                    "querySql": "select id,name,age from part_table_1 where pt2='B'",
                    "datasource": "hive_not_ha_****",  //数据源名称
                    "column": [ //需要读取的字段列
                        "id",
                        "name",
                        "age"
                    ],
                    "where": "",
                    "table": "part_table_1",
                    "readMode": "jdbc" //读取方式
                },
                "name": "Reader",
                "category": "reader"
            },
            {
                "stepType": "hive",
                "parameter": {
                },
                "name": "Writer",
                "category": "writer"
            }
        ],
        "version": "2.0",
        "order": {
            "hops": [
                {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        },
        "setting": {
            "errorLimit": {
                "record": ""
            },
            "speed": {
                "concurrent": 2,  //作业并发数
                "throttle": true,//当throttle值为false时,mbps参数不生效,表示不限流;当throttle值为true时,表示限流。
                "mbps":"12"//限流            
                
            }
        }
    }

Reader脚本参数

参数 描述 是否必选 默认值
datasource 数据源名称,必须与添加的数据源名称保持一致。
table 表名,用于指定需要同步的表。 说明 请注意大小写。
readMode 读取方式:

  • 基于HDFS文件方式读取数据,配置为"readMode":"hdfs"
  • 基于Hive JDBC方式读取数据,配置为"readMode":"jdbc"

说明

  • 基于Hive JDBC方式读取数据时,支持使用Where条件做数据过滤,但是此场景下,Hive引擎底层可能会生成MapReduce任务,效率较慢。
  • 基于HDFS文件方式读取数据时,不支持使用Where条件做数据过滤,此场景下读取数据时会直接访问Hive表底层的数据文件进行读取,读取效率相对更高。
  • 基于HDFS文件方式不支持读取视图(VIEW)表。
partition Hive表的分区信息:

  • 如果您基于Hive JDBC读取数据,无需配置该参数。
  • 如果您读取的Hive表是分区表,您需要配置partition信息。同步任务会读取partition对应的分区数据。

    Hive Reader支持使用星号(*)作为通配符,格式为pt1=a,pt2=b,...

  • 如果您的Hive表是非分区表,则无需配置partition。
column 需要读取的字段列,例如"column": ["id", "name"]

  • 支持列裁剪:即可以导出部分列。
  • 支持列换序,即可以不根据表Schema信息顺序导出列。
  • 支持配置分区列。
  • 支持配置常量。
  • column必须显示指定同步的列集合,不允许为空。
querySql 当您基于Hive JDBC方式读取数据时,可以直接配置querySql读取数据。
where 当您基于Hive JDBC方式读取数据时,可以通过设置where条件过滤数据。
hdfsUsername 基于HDFS方式读取数据,默认会用Hive数据源页面配置的用户读取,若数据源页面配置匿名登录,则会默认使用admin账户读取数据,同步任务时如果出现权限问题,需要转脚本默认配置hdfsUsername。
hivePartitionColumn 若期望把分区字段的值,同步到下游,可以转脚本模式配置hivePartitionColumn参数。

Writer脚本Demo

{
    "type": "job",
    "steps": [
        {
            "stepType": "hive",
            "parameter": {
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "hive",
            "parameter": {
                "partition": "year=a,month=b,day=c", // 分区配置
                "datasource": "hive_ha_shanghai", // 数据源
                "table": "partitiontable2", // 目标表
                "column": [ // 列配置
                    "id",
                    "name",
                    "age"
                ],
                "writeMode": "append" ,// 写入模式
                "hdfsUsername" : "hdfs"
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "version": "2.0",
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    },
    "setting": {
        "errorLimit": {
            "record": ""
        },
        "speed": {
            "throttle":true,//当throttle值为false时,mbps参数不生效,表示不限流;当throttle值为true时,表示限流。
            "concurrent":2, //作业并发数。
            "mbps":"12"//限流
        }
    }
}

Writer脚本参数

参数 描述 是否必选 默认值
datasource 数据源名称,必须与添加的数据源名称保持一致。
column 需要写出的字段列,例如"column": ["id", "name"]

  • 支持列裁剪:即可以导出部分列。
  • column必须显示指定同步的列集合,不允许为空。
  • 不支持列换序。
table 需要写出的Hive表名。 说明 请注意大小写。
partition Hive表的分区信息:

  • 如果您写出的Hive表是分区表,您需要配置partition信息。同步任务会写出partition对应的分区数据。
  • 如果您的Hive表是非分区表,则无需配置partition。
writeMode Hive表数据的写出模式。数据写出至HDFS文件后,Hive Writer插件会执行LOAD DATA INPATH (overwrite) INTO TABLE,加载数据至Hive表中。 writeMode用于表示数据的加载行为:

  • 如果writeMode为truncate,表示先清空数据再加载。
  • 如果writeMode为append,表示保留原有数据。
  • 如果writeMode为其它,则表示数据写出至HDFS文件,无需再加载数据至Hive表。

说明 writeMode是高危参数,请您注意数据的写出目录和writeMode行为,避免误删数据。

加载数据行为需要配合hiveConfig使用,请注意您的配置。

hiveConfig 您可以在hiveConfig中配置进一步的Hive扩展参数,包括hiveCommand、jdbcUrl、username和password:

  • hiveCommand:表示Hive客户端工具的全路径,执行hive -e后,会执行writeMode相关联的LOAD DATA INPATH数据加载操作。

    Hive相关的访问信息由hiveCommand对应的客户端保证。

  • jdbcUrl、username和password表示Hive的JDBC访问信息。HiveWriter会通过Hive JDBC驱动访问Hive后,执行writeMode相关联的LOAD DATA INPATH数据加载操作。
    "hiveConfig": {
        "hiveCommand": "",
        "jdbcUrl": "",
        "username": "",
        "password": ""
            }
  • Hive Writer插件底层通过HDFS客户端,写入数据至HDFS文件。您也可以通过hiveConfig配置HDFS客户端的高级参数。
hdfsUsername 向Hive表写数据时,默认会用Hive数据源页面配置的用户写入,若数据源页面配置匿名登录,则会默认使用admin账户写入数据,同步任务时如果出现权限问题,需要转脚本默认配置hdfsUsername。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/169008.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云对象存储OSS使用JindoFuse访问OSS-HDFS服务-云淘科技

    阿里云OSS-HDFS服务通过JindoFuse提供POSIX支持。JindoFuse可以把OSS-HDFS服务上的文件挂载到本地文件系统中,让您能够像操作本地文件系统一样操作OSS-HDFS服务中的文件。 前提条件 已创建ECS实例。具体步骤,请参见选购ECS实例。 已开通并授权访问OSS-HDFS服务。具体操作,请参见开通并授权访问OSS-HDFS服务。…

    阿里云对象存储 2023年12月10日
  • 阿里云大数据开发治理平台 DataWorksOpenSearch数据源-云淘科技

    DataWorks数据集成支持使用OpenSearch Writer将数据写至OpenSearch,本文为您介绍DataWorks的OpenSearch数据离线写入能力。 支持的版本 V2版本请参见请求结构。 V3版本使用二方包,依赖pom为:com.aliyun.opensearch aliyun-sdk-opensearch 2.1.3。 如果您需要使用…

  • 阿里云日志服务SLS跨地域传输数据-云淘科技

    日志服务支持通过数据加工实现跨地域传输数据,本文介绍跨地域传输数据的使用场景、操作步骤、计费等内容。 使用场景 当您的业务分布在不同地域时,相关日志也会分布在不同地域。当您需要对不同地域的日志进行集中管理时,您可以使用日志服务数据加工中的跨地域传输功能。操作步骤在数据加工页面,输入加工语句,然后单击预览数据。具体操作,请参见创建数据加工任务。说明 如果仅是复…

    阿里云日志服务SLS 2023年12月10日
  • 阿里云ECS云服务器ModifyCommand-云淘科技

    调用ModifyCommand修改一条云助手命令相关参数。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 请求参数 名称 类型 是否必选 示例值 描述 Action String 是 ModifyCommand 系统规定参数。取值:ModifyC…

    阿里云服务器 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云人工智能平台PAI数据可视化-云淘科技

    本文以统计全表信息为例,为您介绍如何进行数据可视化。 前提条件 完成数据准备与预处理,详情请参见数据准备与预处理。 操作步骤 登录PAI控制台,进入工作流页面。操作详情请参见step1:进入工作流页面。 构建全表统计节点并运行。 在组件列表中搜索全表统计组件,找到后将其拖入画布,并将生成的节点作为数据准备与预处理中的类型转换-1节点的下游节点。 右键单击画布…

    2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。