更新时间:2023-11-10 GMT+08:00
分享

Hive

创建hive catalog

通过连接Hive Metastore,或者兼容Hive Metastore的元数据服务,Doris可以自动获取Hive的库表信息,并进行数据查询。

除了Hive外,很多其他系统也会使用Hive Metastore存储元数据。所以通过Hive Catalog,我们不仅能访问Hive,也能访问使用Hive Metastore作为元数据存储的系统。

  • 创建。
    • Hive On OBS
      CREATE CATALOG hive_catalog PROPERTIES (
          'type'='hms',
          'hive.metastore.uris' = 'thrift://127.x.x.x:port',
          'AWS_ACCESS_KEY' = 'ak',
          'AWS_SECRET_KEY' = 'sk',
          'AWS_ENDPOINT' = 'obs.cn-north-4.myhuaweicloud.com',
          'AWS_REGION' = 'cn-north-4',
          'yarn.resourcemanager.address' = '192.X.X.X:port',   
          'yarn.resourcemanager.principal' = 'mapred/hadoop.hadoop.com@HADOOP.COM'
      );
    • Hive On HDFS
      CREATE CATALOG hive_catalog PROPERTIES (
          'type'='hms',
          'hive.metastore.uris' = 'thrift://127.x.x.x:port',
          'dfs.nameservices'='hacluster',
          'dfs.ha.namenodes.hacluster'='3,4',
          'dfs.namenode.rpc-address.hacluster.3'='192.x.x.x:port',
          'dfs.namenode.rpc-address.hacluster.4'='192.x.x.x:port',
          'dfs.client.failover.proxy.provider.hacluster'='org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider',
          'yarn.resourcemanager.address' = '192.X.X.X:port',   
          'yarn.resourcemanager.principal' = 'mapred/hadoop.hadoop.com@HADOOP.COM'
      );
  • 创建后查询:
    select * from hive_catalog.DB.test_table;

元数据缓存设置

创建Catalog时可以采用参数file.meta.cache.ttl-second来设置Hive分区文件缓存自动失效时间,也可以将该值设置为0来禁用分区文件缓存,时间单位为:秒。示例如下:

CREATE CATALOG hive_catalog PROPERTIES (
    'type'='hms',
    'hive.metastore.uris' = 'thrift://127.x.x.x:port',
    'AWS_ACCESS_KEY' = 'ak',
    'AWS_SECRET_KEY' = 'sk',
    'AWS_ENDPOINT' = 'obs.cn-north-4.myhuaweicloud.com',
    'AWS_REGION' = 'cn-north-4',
    'file.meta.cache.ttl-second' = '60',
    'yarn.resourcemanager.address' = '192.X.X.X:port',   
    'yarn.resourcemanager.principal' = 'mapred/hadoop.hadoop.com@HADOOP.COM'
);

Hive版本

Doris可以正确访问不同Hive版本中的Hive Metastore。在默认情况下,Doris会以Hive2.3版本的兼容接口访问Hive Metastore。你也可以在创建Catalog时指定hive的版本。如访问Hive1.1.0版本:

CREATE CATALOG hive_catalog PROPERTIES (
    'type'='hms',
    'hive.metastore.uris' = 'thrift://127.x.x.x:port',
    'AWS_ACCESS_KEY' = 'ak',
    'AWS_SECRET_KEY' = 'sk',
    'AWS_ENDPOINT' = 'obs.cn-north-4.myhuaweicloud.com',
    'AWS_REGION' = 'cn-north-4',
    'hive.version' = '1.1.0',
    'yarn.resourcemanager.address' = '192.X.X.X:port',   
    'yarn.resourcemanager.principal' = 'mapred/hadoop.hadoop.com@HADOOP.COM'
);

参数说明

表1 参数说明

参数名

参数说明

type

对接外部数据类型,hms:Hive MetaStore。

hive.metastore.uris

hive元数据uri,可在hive配置页面查看。

AWS_ACCESS_KEY

access key,获取方式请参见对象存储服务的获取访问密钥(AK/SK)章节。

AWS_SECRET_KEY

secret key,获取方式请参见对象存储服务的获取访问密钥(AK/SK)章节。

AWS_ENDPOINT

obs地址,获取方式见请参见对象存储服务的获取终端节点章节。

AWS_REGION

obs region,在obs页面查看。

file.meta.cache.ttl-second

元数据缓存设置。

hive.version

Hive版本。

dfs.nameservices

name service名称,与hdfs-site.xml保持一致。

dfs.ha.namenodes.[nameservice ID]

namenode的ID列表,与hdfs-site.xml保持一致。

dfs.namenode.rpc-address.[nameservice ID].[name node ID]

Name node的rpc地址,数量与namenode数量相同,与hdfs-site.xml保持一致。

dfs.client.failover.proxy.provider.[nameservice ID]

HDFS客户端连接活跃namenode的Java类,通常是 org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider。

yarn.resourcemanager.address

  • 可在yarn-site.xml配置文件查看。
  • 获取参数步骤:
    1. 登录MRS集群的Manager页面。
    2. 主页>Yarn>实例>ResoureManager>概览>配置文件>yarn-site.xml。
    3. 查看地址,返回实例界面查看。

yarn.resourcemanager.principal

  • 可在yarn-site.xml配置文件查看。
  • 获取参数步骤:
    1. 登录MRS集群的Manager页面。
    2. 主页>Yarn>实例>ResoureManager>概览>配置文件>yarn-site.xml。

列类型映射

表2 参数说明

HMS Type

Doris Type

Comment

boolean

boolean

-

tinyint

tinyint

-

smallint

smallint

-

int

int

-

bigint

bigint

-

date

date

-

timestamp

datetime

-

float

float

-

double

double

-

char

char

-

varchar

varchar

-

decimal

decimal

-

array<type>

array<type>

支持array嵌套,如 array<array<int>>。

map<KeyType, ValueType>

map<KeyType, ValueType>

暂不支持嵌套,KeyType 和 ValueType 需要为基础类型。

struct<col1: Type1, col2: Type2, ...>

struct<col1: Type1, col2: Type2, ...>

暂不支持嵌套,Type1, Type2, ... 需要为基础类型。

other

unsupported

-

相关文档