hive的数据导入

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

1 数据导入

1.1 向表中装载数据(Load)

1)语法

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

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

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

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

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

(5)intotable:表示加载到哪张表。

(6)student:表示具体的表。

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

2)实操案例

(0)创建一张表

hive (default)> 
create table student(
   id int, 
   name string
) 
row format delimited fields terminated by'\t';

(1)加载本地文件到hive

hive (default)> load data local inpath'/opt/module/hive/datas/student.txt' into table student;

(2)加载HDFS文件到hive中

①上传文件到HDFS

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

②加载HDFS上数据,导入完成后去HDFS上查看文件是否还存在

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

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

①上传文件到HDFS

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

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

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

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

1)创建一张表

hive (default)> 
create table student3(
   id int, 
   name string
) 
row format delimited fields terminated by'\t';

2)基本模式插入数据

hive (default)> insert into table  student3 values(1,'wangwu'),(2,'zhaoliu');

3)根据查询结果插入数据

hive (default)> insert overwrite tablestudent3 
select 
   id, 
   name 
from student 
where id < 1006;

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

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

注:insert不支持插入部分字段,并且后边跟select语句时,select之前不能加as,加了as会报错,一定要跟下面的as select区分开。

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

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

hive (default)>
create table if not exists student4 
as select id, name from student;

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

1)上传数据到HDFS上

[lily@hadoop102 datas]$ hadoop fs-mkdir -p /student5;
[lily@hadoop102 datas]$ hadoop fs -putstudent.txt /student5

2)创建表,并指定在HDFS上的位置

hive (default)>
create external table if notexists student5(
   id int, 
   name string
)
row format delimited fields terminated by'\t'
location '/student5';

3)查询数据

hive (default)> select * from student5;

1.5 Import数据到指定Hive表中

注:先用export导出后,再将数据导入。并且因为export导出的数据里面包含了元数据,因此import要导入的表不可以存在,否则报错。

hive (default)> 
import table student2 from '/user/hive/warehouse/export/student';

2 数据导出

2.1 Insert导出

1)将查询的结果导出到本地

hive (default)> 
insert overwrite local directory'/opt/module/hive/datas/export/student' 
select * from student;

2)将查询的结果格式化导出到本地

hive(default)> 
insert overwrite local directory'/opt/module/hive/datas/export/student' 
row format delimited fields terminated by'\t' 
select * from student;

3)将查询的结果导出到HDFS上(没有local)

hive (default)> insert overwrite directory'/user/atguigu/student2' 
row format delimited fields terminated by'\t' 
select * from student;

:insert导出,导出的目录不用自己提前创建,Hive会帮我们自动创建,但是由于是overwrite,所以导出路径一定要写具体,否则很可能会误删数据。

2.2 Export导出到HDFS

hive (default)> 
export table default.student to 
 '/user/hive/warehouse/export/student';

注:Export和Import主要用于两个Hadoop平台集群之间Hive表迁移,不能直接导出到本地。文章来源地址https://www.toymoban.com/news/detail-635320.html

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

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

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

相关文章

  • (C#) IIS 响应标头过滤敏感信息(如:Server/X-Powered-By等) 运维知识

    再一次净网行动中,客户要求安全改造发现了接口请求的header标头中出现如图中的敏感信息。   其意义在于告知浏网站是用什么语言或者框架编写的。解决办法就是修改该响应头为一个错误的值,将攻击者导向一个错误的方向。 这里只说windows 的iis环境,不考虑其他服务器的

    2024年02月11日
    浏览(73)
  • 二百零九、Hive——with嵌套语句报错:hadoop.hive.ql.parse.SemanticException: Line 2:5 Ambiguous table alias ‘t2‘

    在Hive的with嵌套语句时,HQL报错Line 2:5 Ambiguous table alias \\\'t2\\\' org.apache.hadoop.hive.ql.parse.SemanticException: Line 2:5 Ambiguous table alias \\\'t2\\\' 看报错提示,Ambiguous table alias \\\'t2\\\',似乎是with嵌套子语句命名t2报错,但是我试了很多其他命名,都报类似的错误,如果大家知道原因的话还望告知,谢

    2024年01月20日
    浏览(46)
  • hive建表,与插入数据

    思路,hive导入分区表,只能通过临时表导入。 固建立临时表(不分区),导入数据到临时表,创建分区表,通过【insert 分区表 select 临时表】 导入分区表 打开hue或者直接hive ----------------------------- 创建分区表 ----------------------------- 外部表external 以日期进行分区partitioned 数据

    2024年02月10日
    浏览(45)
  • 【大数据】Hive 表中插入多条数据

    在 Hive 中,我们可以使用 INSERT INTO 语句向表中插入数据。当我们需要插入多条数据时,有多种方式可以实现。本文将介绍如何在 Hive 表中插入多条数据,并提供相应的代码示例。 最简单的方式是使用单个 INSERT INTO 语句插入多条数据。我们可以使用值列表的方式将多条数据一

    2024年02月12日
    浏览(44)
  • MySQL 数据库 group by 语句怎么优化?

    我这里创建一张订单表 复制代码 同时也在表里插了一些数据 现在我们这里执行 group by 语句 复制代码 很明显,这里就可以统计出来 每件商品一共有多少订单数据! 2.1、explain 分析 不同的数据库版本,用 explain 执行的结果并不一致,同样是上面 sql 语句 「MySQL 5.7 版本」 Extr

    2024年02月06日
    浏览(45)
  • Hive创建分区表并插入数据

    业务中经常会遇到这种需求:数据每天全量更新,但是要求月底将数据单独保存一份以供后期查询某月节点的信息。这时就要考虑用到Hive的分区表实现,即按照月份创建分区表,相当于新的月份数据保存在新表,进而实现保存了历史数据。 分区表的创建本质是在HDFS创建了一

    2024年02月07日
    浏览(51)
  • 大数据面试题:Hive的cluster by 、sort by、distribute by 、order by 区别?

    面试题来源: 《大数据面试题 V4.0》 大数据面试题V3.0,523道题,679页,46w字 参考答案: 可回答:1)Hive的排序函数;2)Hive的排序,以及各自的区别;3)四个by的区别? 参考答案: 共有四种排序:Order By,Sort By,Distribute By,Cluster By 1、Order By :全局排序 对输入的数据做排

    2024年02月09日
    浏览(44)
  • MySql按条件插入数据,MySQL插入语句写where条件,MySQL在插入时做幂等

    使用MySQL的删、改、查功能时,我们都可以根据where条件来对指定数据进行操作。 插入语句如何通过where条件,来判断是否允许插入呢? 此时表里有三条数据了: 上面sql执行结果: insert into test_table (id, content) select * from (select ‘4’, ‘内容4’) as tmp where not exists ( select 1 from

    2023年04月09日
    浏览(49)
  • 【postgresql 基础入门】插入数据的多种方式 单条,多值,查询结果,插入数据冲突处理,批量导入,多种方式让数据插入更灵活

    ​ 专栏内容 : postgresql内核源码分析 手写数据库toadb 并发编程 ​ 开源贡献 : toadb开源库 个人主页 :我的主页 管理社区 :开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 入门准备 postgrersql基础架构 快速使用 初始化集群 数据库服务管理 psql客户

    2024年02月08日
    浏览(53)
  • Hive(19):DML之Insert插入数据

    1 背景:RDBMS中insert使用(insert+values) 在MySQL这样的RDBMS中,通常是insert+values的方式来向表插入数据,并且速度很快。这也是RDBMS中插入数据的核心方式。 假如说对Hive的定位不清,把Hive当成RDBMS来使用,也使用insert+values的方式插入数据,会如何呢? 你会发现执行过程非常非

    2024年02月13日
    浏览(68)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包