弹性 MapReduce 使用 Hive 在 COS/CHDFS 中创建库表

这篇说说如何使用Hive在腾讯云COS及CHDFS上创建库表,涵盖两种存储路径的两种建库方式:将整个数据库或指定表建立在远程存储上。 COS建库:通过location指定cosn路径可创建数据库或单表。 CHDFS建库:通过location指定ofs路径可创建数据库或单表。

相关产品
弹性 MapReduce 产品页,含版本规格、价格与购买入口。

这里说明如何使用 Hive 在 COS 及 CHDFS 上创建库表。

一、开发准备

·确认你已经开通了腾讯云,并且创建了一个 EMR 集群。在创建 EMR 集群的时候需要在软件配置界面选择 Hive 组件。

·示例中存在需要访问腾讯云对象存储 COS 的内容,可参考 创建存储桶 在 COS 中创建一个存储桶(Bucket),并于 EMR 控制台 实例信息 页面开启对象存储授权。

·示例中存在需要访问腾讯云对象存储 CHDFS 的内容,可参考 挂载 CHDFS 创建挂载点并挂载至 EMR 集群。

二、使用 Hive 在 COS 上创建库表

注意:说明:

注意:EMR 已默认集成 Hadoop-COS ,你在 EMR 控制台开启对象存储授权后,会使用腾讯云 EMR 实例绑定的角色,获取访问 COS 的临时密钥进行访问,该方式相比固定密钥更为安全。

注意:其他配置方式可参考对象存储-Hadoop 工具。

三、方式一:将整个数据库建立在 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)

五、方式一:将整个数据库建立在 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)

赞 (0)
上一篇 5天前
下一篇 5天前