本文为您介绍如何使用 Hive 在 COS 及 CHDFS 上创建库表。
开发准备
确认您已经开通了腾讯云,并且创建了一个 EMR 集群。在创建 EMR 集群的时候需要在软件配置界面选择 Hive 组件。
示例中存在需要访问腾讯云对象存储 CHDFS 的内容,可参考 挂载 CHDFS 创建挂载点并挂载至 EMR 集群。
使用 Hive 在 COS 上创建库表
说明:
EMR 已默认集成 Hadoop-COS ,您在 EMR 控制台开启对象存储授权后,会使用腾讯云 EMR 实例绑定的角色,获取访问 COS 的临时密钥进行访问,该方式相比固定密钥更为安全。
方式一:将整个数据库建立在 COS 上
登录 EMR 集群的 Master 节点,切换到 Hadoop 用户,执行以下命令即可进入 Hive 命令行:
hive
执行下面的命令,在您的 COS 桶下创建名为 hivewithcos 的数据库。
hive> create database hivewithcos location 'cosn://${bucketname}/${path}';
说明:
其中 ${bucketname}为您创建的 COS 存储桶名称,${path} 为存储路径。
查看执行结果,可以看到我们在 COS 上创建的 hivewithcos 数据库:
hive> show databases;OKdefaulthivewithcosTime taken: 0.094 seconds, Fetched: 2 row(s)
创建一张名为 record 的数据表(向表中 load 数据的方式和 HDFS 相同):
hive> use hivewithcos;hive> create table record(id int, name string) row format delimited fields terminated by ',' stored as textfile;
查看表:
hive> show tables;OKrecordTime taken: 0.063 seconds, Fetched: 1 row(s)
方式二:将指定表放在 COS 上
在 Hive 中创建一个数据库:
hive> create database test;hive> use test;
执行如下语句在 COS 桶路径下创建名为 record 的表(向表中 load 数据的方式和 HDFS 相同):
hive> create table record(id int, name string) row format delimited fields terminated by ',' stored as textfile location 'cosn://$bucketname/$path';
查看表:
hive> show tables;OKrecordTime taken: 0.063 seconds, Fetched: 1 row(s)
使用 Hive 在 CHDFS 创建库表
方式一:将整个数据库建立在 CHDFS上
登录 EMR 集群的 Master 节点,切换到 Hadoop 用户,执行以下命令即可进入 Hive 命令行:
hive
执行下面的命令,在您的 CHDFS 目录下创建名为 hivewithofs 的数据库:
hive> create database hivewithofs location 'ofs://${mountpoint}/${path}';
说明:
其中 ${mountpoint} 为您创建的 CHDFS 挂载地址,${path} 为路径。
查看执行结果,可以看到我们在 CHDFS 上创建的 hivewithofs 数据库:
hive> show databases;OKdefaulthivewithofsTime taken: 0.094 seconds, Fetched: 2 row(s)
创建一张名为 record 的数据表(向表中 load 数据的方式和 HDFS 相同)
hive> use hivewithofs;hive> create table record(id int, name string) row format delimited fields terminated by ',' stored as textfile;
查看表:
hive> show tables;OKrecordTime taken: 0.063 seconds, Fetched: 1 row(s)
方式二:将指定表放在 CHDFS 上
在 Hive 创建一个数据库 test2:
hive> create database test2;hive> use test2;
执行如下语句在 chdfs 下创建名为record的表:
hive> create table record(id int, name string) row format delimited fields terminated by ',' stored as textfile location 'cosn://$mountpoint/$path';
查看表:
hive> show tables;OKrecordTime taken: 0.063 seconds, Fetched: 1 row(s)