云计算-HIVE部分代码复习(自用)

这篇具有很好参考价值的文章主要介绍了云计算-HIVE部分代码复习(自用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、数据仓库的操作

1.在Hive中创建一个数据仓库,名为DB

create database DB;

以上创建了一个BD库,但是这一条sql可以进一步优化,我们可以加上if not exists

create database if not exists DB;

2.查看数据仓库BD的信息及路径

describe database DB;

3.删除名为DB的数据仓库

drop database if exist DB;

二、Hive数据表的操作

1.查看已经存在的表,因为如果创建已经存在的表的话会报错

show tables;

2..创建一个名为cat的内部表,有两个字段为cat_id和cat_name,字符类型为string。

create table cat(cat_id string, cat_name string);

如果重复创建则会出现以下情况云计算-HIVE部分代码复习(自用),云计算,hive,hadoop

3. 修改cat表格结构,对于cat表添加两个字段group_id和cat_code.

alter table cat add columns(group_id string,cat_code string);

4.使用desc命令查看以下加完字段的cat表结构

desc cat;

5.修改cat2的表名 , 把cat2重命名为cat3

alter table cat2 rename to cat3;

6.删除名为cat3的表并查看

drop table cat3;

show tables;

7.创建与表相同结构的表,创建一个与cat表结构相同的表,名为cat4, 这里要用到like关键字

create table cat4 like cat

8.从本地文件系统中导入数据到Hive表

在Hive中创建一个cat_group表,包含group_id和group_name两个字段,字符类型为string,以"\t" 为分隔符, 并查看结果

create table cat_group(group_id string,group_name string) row format delimited fields terminated by '\t'  stored as textfile;

[row format delimited]关键字,是用来设置创建的表在加载数据的时候,支持的列分隔符。

[stored as textfile]关键字,是用来设置加载数据的数据类型,默认是TEXTFILE,如果文件数据是纯文本,就是使用 [stored as textfile],然后从本地直接拷贝到HDFS上,Hive直接可以识别数据。

将Linux本地/data/hive2目录下的cat_group文件导入到Hive的cat_group表中

load data local inpath '/data/hive2/cat_group' into table cat_group;

9.从本地文件系统中导入数据到Hive

在HDFS上创建/myhive2目录

hadoop fs -mkdir /myhive2

然后将本地的/data/hive2/下面的cat_group表上传到HDFS的/myhive2上,并查看是否创建成功

hadoop fs -put /datahive2/cat_group /myhive2

hadoop fs -ls /myhive2

接着,在Hive中创建名为cat_group1的表,创表语句如下:

create table cat_group1(group_id string,group_name string)
row format delimited fields terminated by '\t'  stored as textfile;

最后,将HDFS下/myhive2中的表cat_group导入到Hive中的cat_group1表中,并查看结果

load data inpath '/myhive2/cat_group' into table cat_group1;

select * from cat_group1 limit10;

10.从别的表中查询出相应的数据并导入到Hive中

首先在hive中创建一个名为cat_group2的表

create table cat_group2(group_id string,group_name string)

row format delimited fields terminated by '\t' stored as textfile;

用下面两种方式将cat_group1表中的数据导入到cat_group2表中

insert into table cat_group2 select * from cat_group1;

insert overwrite table cat_group2 select * from cat_group1;

(insert overwrite 会覆盖数据)。

导入完成后,用select语句查询cat_group2表

select * from cat_group2 limit 10;

11.在创建表的时候从别的表中查询出相应数据并插入到所创建的表中

create table cat_grup3 as select * from cat_group2;

创建并导入完成,用select语句查询实验结果。

select * from cat_group3 limit 10;

三、三种常见的数据导出方式

12.导出到本地文件系统

首先在Linux本地创建/data/hive2/out目录

mkdir -p /data/hive2/out

并将Hive中的cat_group表导出到本地文件系统/data/hive2/out中

insert overwrite local directory '/data/hive2/out' select * from cat_group;

注意:方法和导入数据到Hive不一样,不能用insert into来将数据导出。

到处完成后,在Linux本地切换到/data/hive2/out目录, 通过cat命令查询导出文件的内容

cd /data/hive2/out

ls

 cat 000000_0

云计算-HIVE部分代码复习(自用),云计算,hive,hadoop

通过上图可以看到导出的数据,字段之间没有分割开,所以我们使用下面的方式,将输出字段以“\t”键分割。

insert overwrite local directory '/data/hive2/out' select group_id,concat('\t',group_name) from cat_group;

13.导出到Hive的另一个表中

将Hive中表cat_group中的数据导入到cat_group4中(两表字段及字符类型相同)。

首先在Hive中创建一个表cat_group4,有group_id和group_name两个字段,字符类型为string,以‘\t’为分隔符。

create table cat_group4(group_id string,group_name string)
row format delimited fields terminated by '\t'  stored as textfile;
 

然后将cat_group中的数据导入到cat_group4中

insert into table cat_group4 select * from cat_group;

四、Hive分区的操作

创建表分区, 在Hive中创建一个分区表goods,包含goods_id和goods_status两个字段,字符类型为string, 分区为cat_id, 字符类型为string , 以"\t"为分隔符

create table goods(goods_id strings, goods_status strings)row format delimited fields terminated by"\t";

查看表goods结构

desc goods;

向分区插入数据, 将本地/data/hive2下的表goods中数据插入到分区表goods中

首先,在Hive下创建一个非分区表goods_1表, 用于存储本地/data/hive2下的表goods中的数据

create table goods_1(goods_id string,goods_status string,cat_id string)
row format delimited fields terminated by '\t';
 

将本地/data/hive2下的表goods中的数据导入到Hive中的goods_1中

load data local inpath '/data/hive2/goods' into table goods_1;

再将goods_1中的数据导入到分区表goods中

insert into table goods partition(cat_id='52052') select goods_id,goods_status from goods_1 where cat_id='52052';

查看表goods中的分区 

show partitions goods;

修改表分区, 将分区表中的分区列cat_id = 52052改为52051,并查看修改后的分区名

alter table goods partition(cat_id=52052) rename to partition(cat_id=52051);

show partitions goods;

删除表分区

在删除goods分区表之前,先将goods表被分出一个goods_2表

create table goods_2(goods_id string,goods_status string) partitioned by (cat_id string)
row format delimited fields terminated by '\t';

insert into table goods_2 partition(cat_id='52052') select goods_id,goods_status from goods_1 where cat_id='52052';
 

删除goods表中的cat_id分区

alter table goods drop if exist partition(cat_id='52051');

五、Hive桶的操作

创建桶

创建一个名为goods_t的表, 包含两个字段goods_id和goods_status, 字符类型都为string, 按照cat_id string分区,按godds_status列聚类和goods_id列排序,划分成两个桶

create table goods_t(goods_id string,goods_status string) partitioned by(cat_id string)

clustered by(goods_status) sorted by (goods_id) into 2 buckets

设置环境变量

set hive.enforce.bucketing=true;

向goods_t表格

中插入goods_2表中的数据

from goods_2 insert overwrite table goods_t partition(cat_id='52063') select goods_id,good_status

查看结果

select * from goods_t tablesample(bucket 1 out of 2 on goods_id);

云计算-HIVE部分代码复习(自用),云计算,hive,hadoop文章来源地址https://www.toymoban.com/news/detail-767681.html

到了这里,关于云计算-HIVE部分代码复习(自用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【hive】单节点搭建hadoop和hive

    需要使用hive远程debug,尝试使用无hadoop部署hive方式一直失败,无果,还是使用有hadoop方式。最终查看linux内存占用 6GB ,还在后台运行docker的mysql( bitnami/mysql:8.0 ),基本满意。 版本选择: (1)hive2 hadoop2 和hive3和hadoop3需要搭配使用,不能像chd的hive2和hadoop3搭配使用,容易出现

    2024年04月10日
    浏览(29)
  • 云计算openstack私有云部分答案(自用)

    数据库安装与调优[0.5 分] 在 controller 节点上使用 iaas-install-mysql.sh 脚本安装 Mariadb、Memcached、RabbitMQ 等服务。安装服务完毕后,修改/etc/my.cnf 文件,完成下列要求: 1.设置数据库支持大小写; 2.设置数据库缓存 innodb 表的索引,数据,插入数据时的缓冲为 4G; 3.设置数据库的

    2024年02月12日
    浏览(33)
  • hive删除分区部分数据

    hive表删除数据不能使用delete from table_name 的SQL语句, 一。删除分区部分数据 注意:select后面不能使用* 二、删除分区全部数据 三、删除多个分区数据

    2024年02月13日
    浏览(34)
  • Hadoop Hive入门

    1.linux 安装hive 2.hive 入门 3.hive 高级语法1 1.linux 安装hive 先确保linux虚拟机中已经安装jdk;mysql和hadoop 并可以成功启动hadoop和mysql 下载hive对应版本到opt/install目录下并解压到opt/soft目录下 重命名 hive312 配置profile 文件,加入hive环境变量 vim /etc.profile 更新资源 source /etc/profile 拷贝

    2024年02月09日
    浏览(26)
  • 【Hadoop】-Hive部署[12]

    目录 思考 VMware虚拟机部署 规划 步骤1:安装MySQL数据库 步骤2:配置Hadoop 步骤3:下载解压Hive 步骤4:提供MySQL Driver包 步骤5:配置Hive 步骤6:初始化元数据库 步骤7:启动Hive(使用hadoop用户) 部署Hive的主要流程: Hive是分布式运行的框架还是单机运行的? Hive是单机工具,只

    2024年04月27日
    浏览(20)
  • Hadoop、Hive安装

    Linux系统:Centos,版本7.0及以上 JDK:jdk1.8 Hadoop:3.1.3 Hive:3.1.2 虚拟机:VMware mysql:5.7.11 工具下载地址: https://pan.baidu.com/s/10J_1w1DW9GQC7NOYw5fwvg?pwd=0kdr 提取码: 0kdr 提示:以下是本篇文章正文内容,下面案例可供参考 下载jdk-8u181-linux-x64.tar.gz包,将此包上传至/opt 目录下。 使用

    2024年02月08日
    浏览(25)
  • Hadoop集成Hive

    说明:服务器已用主机名代替,可根据自己的需求,改为IP地址 环境 服务器 组件 master NameNode、DataNode、Nodemanager、ResourceManager、Hive、Hive的metastore、Hive的hiveserver2、mysql Secondary SecondaryNameNode、DataNode、NodeManager Datanode DataNode、NodeManager、Hive的beeline访问方式 1、java版本1.8 2、Rs

    2024年02月16日
    浏览(29)
  • hadoop&Hive安全模式

    Hive介绍 Hive是基于 Hadoop 的一个 数据仓库 工具,用于做OLAP 分析数据。Hive的数据存储在hadoop的hdfs中。 hive 提供了内置的derby存储元数据,不需要单独配置metastore 也不需要单独启动metastore服务,但一般适合单机。但是开发中一般使用远程模式,将元数据存储在外置的RDBMS中。这

    2024年02月05日
    浏览(33)
  • Hadoop——Hive相关问题汇总

    (1) 连接数据库时SSL问题  解决方法:useSSL=false要放最后 (2) jdbc:hive2://localhost:10091: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: Áõ¸ is not allowed to impersonate root org.apache.hadoop.ipc.RemoteException:User: Áõ¸

    2024年02月16日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包