Hive基础知识(十):Hive导入数据的五种方式

这篇具有很好参考价值的文章主要介绍了Hive基础知识(十):Hive导入数据的五种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 向表中装载数据(Load)

1)语法

hive> load data [local] inpath '数据的 path'[overwrite] into table student [partition (partcol1=val1,…)];

(1)load data:表示加载数据

(2)local:表示从本地加载数据到 hive 表;否则从 HDFS 加载数据到 hive 表

(3)inpath:表示加载数据的路径

(4)overwrite:表示覆盖表中已有数据,否则表示追加

(5)into table:表示加载到哪张表

(6)student:表示具体的表

(7)partition:表示上传到指定分区

2)实操案例

(0)创建一张表

 create table student(id string, name string) row format delimited fields terminated by '';

(1)加载本地文件到 hive

hive (hive3)> load data local inpath '/home/atguigu/student.txt' into table hive3.student;
Loading data to table hive3.student
OK
Time taken: 1.007 seconds

查询结果:

hive (hive3)> select * from student;
OK
student.id  student.name
1001  ss1
1002  ss2
1003  ss3
1004  ss4
1005  ss5
1006  ss6
1007  ss7
1008  ss8
1009  ss9
1010  ss10
1011  ss11
1012  ss12
1013  ss13
1014  ss14
1015  ss15
1016  ss16
1001  zzz
1002  ddd
1111  ccc

(2)加载 HDFS 文件到 hive 中

上传文件到 HDFS

hive (default)> dfs -put /opt/module/hive/data/student.txt /user/atguigu/hive; 

加载 HDFS 上数据

hive (default)> load data inpath '/user/atguigu/hive/student.txt' into  table default.student;

(3)加载数据覆盖表中已有的数据

上传文件到 HDFS

hive (default)> dfs -put /opt/module/data/student.txt /user/atguigu/hive; 

加载数据覆盖表中已有的数据

hive (hive3)> load data local inpath '/home/atguigu/student.txt' overwrite into table hive3.student;

查询覆盖后的信息:

hive (hive3)> select * from student;
OK
student.id  student.name
1001  zzz
1002  ddd
1111  ccc
Time taken: 0.747 seconds, Fetched: 3 row(s)

2. 通过查询语句向表中插入数据(Insert)

1)创建一张表

hive (default)> create table student_par(id int, name string) row format delimited fields terminated by '';
OK
Time taken: 3.124 seconds

2)基本插入数据,插入数据会生成MR任务,这样插入的数据会放在最前面

hive (default)>  insert into table student_par  values(1,'wangwu'),(2,'zhaoliu');
Automatically selecting local only mode for query
Query ID = atguigu_20211217144118_3d15bc1c-c822-41f3-a62b-62e1e57fa3a2
Total jobs = 3
Launching Job 1 out of 3
Number of reduce tasks determined at compile time: 1
In order to change the average load for a reducer (in bytes):
 set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
 set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
 set mapreduce.job.reduces=<number>
Job running in-process (local Hadoop)
2021-12-17 14:41:21,668 Stage-1 map = 0%, reduce = 0%
2021-12-17 14:41:22,688 Stage-1 map = 100%, reduce = 0%
2021-12-17 14:41:23,694 Stage-1 map = 100%, reduce = 100%
Ended Job = job_local1983525660_0001
Stage-4 is selected by condition resolver.
Stage-3 is filtered out by condition resolver.
Stage-5 is filtered out by condition resolver.
Moving data to directory hdfs://hadoop100:8020/user/hive/warehouse/student_par/.hive-staging_hive_2021-12-17_14-41-18_153_8125208710986864882-1/-ext-10000
Loading data to table default.student_par
MapReduce Jobs Launched: 
Stage-Stage-1:  HDFS Read: 0 HDFS Write: 82823431 SUCCESS
Total MapReduce CPU Time Spent: 0 msec
OK
col1  col2
Time taken: 8.727 seconds

3)基本模式插入(根据单张表查询结果)

下面将hive3里面的student表的内容overwrite到student_par表格里面

hive (default)> insert overwrite table student_par select id, name from hive3.student;
OK
id  name
Time taken: 5.391 seconds
hive (default)> select * from student_par;
OK
student_par.id  student_par.name
1001  zzz
1002  ddd
1111  ccc
Time taken: 0.275 seconds, Fetched: 3 row(s)

insert into:以追加数据的方式插入到表或分区,原有数据不会删除

insert overwrite:会覆盖表中已存在的数据

注意:insert 不支持插入部分字段

4)多表(多分区)插入模式(根据多张表查询结果)

hive (default)> from student
 insert overwrite table student partition(month='201707')
 select id, name where month='201709'
 insert overwrite table student partition(month='201706')
 select id, name where month='201709';

3. 查询语句中创建表并加载数据(As Select)

详见4.5.1 章创建表。根据查询结果创建表(查询的结果会添加到新创建的表中)

hive (default)> create table if not exists student1 as select id,name from hive3.student;
OK
id  name
Time taken: 3.2 seconds
hive (default)> select * from student1;
OK
student1.id  student1.name
1001  zzz
1002  ddd
1111  ccc
Time taken: 0.231 seconds, Fetched: 3 row(s)

4. 创建表时通过 Location 指定加载数据路径

1)上传数据到 hdfs 上

hive (default)> dfs -mkdir /student;
hive (default)> dfs -put /home/atguigu/student.txt /student;

Hive基础知识(十):Hive导入数据的五种方式,大数据,hive,hadoop,数据仓库

2)创建表,并指定在 hdfs 上的位置(最好使用外部表)

hive (default)> create external table if not exists student5(id int, name string) row format delimited fields terminated by "" location '/student';
OK
Time taken: 0.482 seconds

3)查询数据

hive (default)> select * from student5;
OK
student5.id  student5.name
1001  zzz
1002  ddd
1111  ccc
Time taken: 0.45 seconds, Fetched: 3 row(s)

5. Import 数据到指定 Hive 表中

注意:先用 export 导出后,再将数据导入(不然会报非法路径的错误)。文章来源地址https://www.toymoban.com/news/detail-799426.html

hive (default)> import table student5 from '/user/hive/warehouse/student/student.txt';

到了这里,关于Hive基础知识(十):Hive导入数据的五种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • hive 基础知识

    在本节前我们需要明确 hive 是什么 上面两个代码块,左边的是 mapreduce 的代码块,右边的是hive 的代码块 很容易看出来,右边的 hive 写起来要更容易更快些,而执行效率,右边的 hive 只比左边多一个翻译的过程,就是将写的 HQL语句 翻译成 mapreduce 去执行 简单来说 hive 就是一

    2024年02月09日
    浏览(23)
  • 使用hive sql 为hive增加或者创建自增列,自增id的五种方式

    *注意:此篇完全是废话,是错误演示文档 创建带有自增ID的Hive表的方法是使用Hive中的 SERDE (序列化和反序列化)和 ROW FORMAT 来为表添加自增ID。具体步骤如下: 在上面的代码中,我们首先使用 CREATE TABLE 语句创建一个名为 your_table 的表,并指定了表的列和数据类型。

    2023年04月18日
    浏览(29)
  • Day1 - Hive基础知识

    概述 Hive是由Facobook开发的后来贡献给了Apache的一套用于进行 数据仓库 管理的工具,使用类SQL语言来对分布式文件系统中的PB级别的数据来进行读写、管理以及分析 Hive基于Hadoop来使用的,底层的默认计算引擎使用的是MapReduce。Hive利用类SQL(HQL,Hive Query Language)语言来操作数据

    2024年04月29日
    浏览(25)
  • Hive基础知识(十五):Hive中SQL排序方式全解

    Order By:全局排序,只有一个 Reducer 1)使用 ORDER BY 子句排序 ASC(ascend): 升序(默认) DESC(descend): 降序 2)ORDER BY 子句在 SELECT 语句的结尾 3)案例实操 (1)查询员工信息按工资升序排列 (2)查询员工信息按工资降序排列 按照员工薪水的2 倍排序 按照部门和工资升序排

    2024年01月19日
    浏览(35)
  • HBase基础知识(六):HBase 对接 Hive

    1.Hive (1) 数据仓库 Hive 的本质其实就相当于将 HDFS 中已经存储的文件在 Mysql 中做了一个双射关系,以 方便使用 HQL 去管理查询。 (2) 用于数据分析、清洗 Hive 适用于离线的数据分析和清洗,延迟较高。 (3) 基于 HDFS、MapReduce Hive 存储的数据依旧在 DataNode 上,编写的 HQL 语句终

    2024年02月04日
    浏览(28)
  • Hive基础知识(十六):Hive-SQL分区表使用与优化

    分区表实际上就是对应一个 HDFS 文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。 Hive 中的分区就是分目录 ,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过 WHERE 子句中的表达式选择查询所需要的指定的分区,这样的 查询效率会提高很多

    2024年01月18日
    浏览(30)
  • redis的五种数据类型

    Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。以下是这五种数据类型的简介: string(字符串)类型是Redis最基本的数据类型,一个键最大能存储512MB,它支持二进制数据,即可以包含任何数据,比如jpg图片或

    2024年02月05日
    浏览(37)
  • Redis的五种基本数据类型

    简介:String 是 Redis 最基础的数据结构类型,它是二进制安全的,可以存储图片 或者序列化的对象,值最大存储为 512M 简单使用举例: set key value、get key等 应用场景:共享 session、分布式锁,计数器、限流。 内部编码有 3 种,int(8字节长整型)/embstr(小于等于 39字节字符串)

    2024年04月12日
    浏览(30)
  • 小程序页面之间数据传递的五种方法

    使用 wx.navigateTo() 时,在 url 中拼接,这种方法适用于数据量少的情况 跳转前A页面在 url 中拼接参数,参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 分隔; 跳转到B页面在生命周期函数 onLoad 中接收 如果需要传递对象或数组,需先将对象或数据转为JSON字符

    2024年02月10日
    浏览(31)
  • 【分享】Redis的五种基本数据类型和应用场景

    Redis支持五种基本数据类型: String(字符串类型):可以是普通字符串,也可以是整数或浮点数值。可以设置过期时间;可以对字符串进行append、get、set、incr、decr等操作。 Hash(哈希类型):类似于一个数组,其中每个元素都是一个field和value的键值对。可以对整个哈希表或

    2024年02月16日
    浏览(28)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包