tencent cloud

弹性 MapReduce

动态与公告
产品动态
产品公告
安全公告
产品简介
产品概述
产品优势
产品架构
产品功能
应用场景
约束与限制
技术支持范围
产品发行版
购买指南
EMR on CVM 计费说明
EMR on TKE 计费说明
EMR Serverless HBase 计费说明
快速入门
EMR on CVM 快速入门
EMR on TKE 快速入门
EMR on CVM 操作指南
规划集群
管理权限
配置集群
管理集群
管理服务
监控告警
智能管家
EMR on TKE 操作指南
EMR on TKE 简介
配置集群
管理集群
管理服务
监控运维
应用分析
EMR Serverless HBase 操作指南
EMR Serverless HBase 产品简介
配额与限制
规划实例
管理实例
监控告警
开发指南
EMR 开发指南
Hadoop开发指南
Spark 开发指南
HBASE开发指南
Phoenix on Hbase 开发指南
Hive 开发指南
Presto开发指南
Sqoop 开发指南
Hue 开发指南
Oozie 开发指南
Flume 开发指南
Kerberos 开发指南
Knox 开发指南
Alluxio 开发指南
Kylin 开发指南
Livy 开发指南
Kyuubi 开发指南
Zeppelin 开发指南
Hudi 开发指南
Superset 开发指南
Impala 开发指南
Druid 开发指南
Tensorflow 开发指南
Kudu 开发指南
Ranger 开发指南
Kafka 开发指南
Iceberg 开发指南
StarRocks 开发指南
Flink 开发指南
JupyterLab 开发指南
MLflow 开发指南
实践教程
EMR on CVM 运维实践
数据迁移实践
自定义伸缩实践教程
API 文档
History
Introduction
API Category
Cluster Resource Management APIs
Cluster Services APIs
User Management APIs
Data Inquiry APIs
Scaling APIs
Configuration APIs
Other APIs
Serverless HBase APIs
YARN Resource Scheduling APIs
Making API Requests
Data Types
Error Codes
常见问题
EMR on CVM常见问题
服务等级协议
联系我们

Hive 基础操作

PDF
聚焦模式
字号
最后更新时间: 2024-10-30 11:25:38
本文为您演示如何使用 EMR 上的 Hive 创建库表、导入数据、执行查询等基础操作。

开发准备

确认您已经开通了腾讯云,并且创建了一个 EMR 集群,详情参考创建集群
在创建 EMR 集群时在软件配置界面选择 Hive 组件。
示例中存在需要访问腾讯云对象存储 COS 的可选内容,可参考 创建存储桶 在 COS 中创建一个存储桶(Bucket),并于 EMR 控制台 实例信息 页面开启对象存储授权。
说明:
登录 EMR 节点的方式可参考登录 Linux 实例。在集群详情页中选择 集群资源 > 资源管理,单击对应节点资源 ID 进入云服务器列表,单击右侧登录,即可使用 WebShell 登录实例。
登录 Linux 实例用户名默认为 root,密码为创建 EMR 时用户自己输入的密码。输入正确后,即可进入命令行界面。
本文操作均是以 hadoop 用户进行,请在登录命令行界面后切换用户身份。

准备样例数据

登录到 Master 节点,在 EMR 命令行使用以下命令切换到 hadoop 用户,并进入 Hive 文件夹:
su hadoop
cd /usr/local/service/hive
新建一个 bash 脚本文件 gen_data.sh,在其中添加以下代码:
#!/bin/bash
MAXROW=1000000 #指定生成数据行数
for((i = 0; i < $MAXROW; i++))
do
echo $RANDOM, \\"$RANDOM\\"
done
并按如下方式赋权并执行脚本,该脚本文件会生成 1000000 个随机数对,并且保存到文件 hive_test.data 中:
chmod +x 脚本名称
./gen_data.sh > hive_test.data
使用如下命令把生成的测试数据先上传到 HDFS 中,其中 ${hdfspath} 为 HDFS 上的您存放文件的路径:
hdfs dfs -put ./hive_test.data /${hdfspath}
也可以使用 COS 上面的数据。将数据上传到 COS 中,如果数据在本地,那么可以使用 COS 控制台来上传数据。如果数据在 EMR 集群,那么使用如下命令来上传数据,其中 ${bucketname} 为您创建的 COS 桶名:
hdfs dfs -put ./hive_test.data cosn://${bucketname}/

Hive 基础操作

登录 EMR 集群的 Master 节点,切换 hadoop 用户并通过 Hive 客户端进入 Hive 命令行:
hive

创建库表

使用 SHOW 语法展示当前所有数据库:
hive> show databases;
OK
default
Time taken: 0.26 seconds, Fetched: 1 row(s)
使用 CREATE DATABASE 语法创建一个数据库 test:
hive> create database if not exists test;
OK
Time taken: 0.176 seconds
使用 USE 语法转到刚刚创建的 test 数据库下:
hive> use test;
OK
Time taken: 0.176 seconds
使用 CREATE TABLE语法在 test 数据库下创建一个新的名为 hive_test 的内部表:
hive> create table hive_test (a int, b string)
hive> ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
-- 创建数据表 hive_test, 并指定列分割符为','
OK
Time taken: 0.204 seconds
最后可用 SHOW TABLES 语法查看表是否创建成功:
hive> show tables;
OK
hive_test
Time taken: 0.176 seconds, Fetched: 1 row(s)

导入数据

对于存放在 HDFS 中的数据,使用如下指令来将其导入表中:
hive> load data inpath "/${hdfspath}/hive_test.data" into table hive_test;
对于存放在 COS 中的数据,使用如下指令来将其导入表中:
hive> load data inpath "cosn://${bucketname}/hive_test.data" into table hive_test;

也可以将存放在 EMR 集群本地的数据导入到 Hive 中,使用如下指令:
hive>load data local inpath "/${localpath}/hive_test.data" into table hive_test;
说明:
其中 ${hdfspath} 为 HDFS 上的您存放文件的路径,${bucketname} 为您的 COS 桶名, ${localpath} 为您的 EMR 集群本地存放数据的路径。导入完成后,源数据会被删除。

执行查询

查询表中前10个元素:
hive> select * from hive_test limit 10;
OK
30847 "31583"
14887 "32053"
19741 "16590"
8104 "20321"
29030 "32724"
27274 "5231"
10028 "22594"
924 "32569"
10603 "27927"
4018 "30518"
Time taken: 2.133 seconds, Fetched: 10 row(s)
统计表中一共有多少行数据:
hive> select count(*) from hive_test;
OK
1000000
Time taken: 18.504 seconds, Fetched: 1 row(s)

删除库表

使用 DROP TABLE 语法来删除 Hive 表:
hive> drop table if exists hive_test;
Moved: 'hdfs://HDFS/usr/hive/warehouse/hive_test' to trash at: hdfs://HDFS/user/hadoop/.Trash/Current
OK
Time taken: 2.327 seconds
使用 DROP DATABASE 语法来删除 Hive 库:
hive> drop database if exists test;
OK
Time taken: 0.531 seconds

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈