Hive 表 DML 操作 第1关:将文件中的数据导入(Load)到 Hive 表中

这篇具有很好参考价值的文章主要介绍了Hive 表 DML 操作 第1关:将文件中的数据导入(Load)到 Hive 表中。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

相关知识

之前系列实训中我们接触过导入本地文件到Hive表中,本关就进行导入的详细讲解。

为了完成本关任务,你需要掌握:1.导入命令语法,2.如何将本地txt文件导入到分区表中。

导入命令语法

Load操作执行copy/move命令把数据文件copy/moveHive表位于 HDFS上的目录位置,并不会对数据内容执行格式检查或格式转换操作。Load命令语法为:

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=vall,partcol2=val2 …)];

文件路径filepath可以是指向HDFS的相对路径或是绝对路径,也可以是指向本地文件系统(Linux文件系统)相对路径(当前工作目录)或绝对路径。

filepath指向HDFSLOAD执行的是move操作(即执行LOADfilepath中的文件不再存在);若filepath指向本地文件系统,LOAD执行的是copy操作(即执行LOADfilepath中的文件仍然存在),但需要指定LOCAL关键字。

filepath指向一个文件,LOADcopymove相应的文件到表tablename;若filepath指向一个目录,LOADcopymove相应目录下的所有文件到表tablename若创建表时指定了分区列,使用 LOAD 命令加载数据时也要为所有分区列指定特定值。

针对LOAD语句中指明LOCAL关键字,INPATH参数可以使用下述方式确定:

  • Hive 会在本地文件系统中查找filepath

  • 用户可以设置filepath为文件绝对路径,如file:///user/hive/data

针对LOAD语句中未指明LOCAL关键字,INPATH参数可以使用下述方式确定:

  • filepath为相对路径,Hive会解析成为/user/<username>/filepath

  • filepath未指定模式或文件系统类型(如hdfs://namenode:9000/),Hive会把${fs.default.name}值作为Namenode URL

若语句带OVERWRITE关键字,目标表或分区中的原始数据会被删除,替换成新数据;若未指定OVERWRITE关键字,新数据会以追加的方式被添加到表中。

若表或分区中的任何一个文件与filepath中的任何一个文件同名,则表或分区中的同名文件会被filepath中的同名文件替换。

将本地txt文件导入到分区表中(例子)

  • 创建数据库shopping
CREATE DATABASE IF NOT EXISTS shopping
LOCATION '/hive/shopping';
  • 假设在数据库shopping中有分区表items_info2
CREATE TABLE IF NOT EXISTS shopping.items_info2(
name STRING COMMENT 'item name',
price FLOAT COMMENT 'item price',
category STRING COMMENT 'item category',
brand STRING COMMENT 'item brand',
type STRING COMMENT 'item type',
stock INT COMMENT 'item stock',
address STRUCT <city:STRING, country:STRING, zip:INT> COMMENT 'item sales address')
COMMENT 'goods information table'
PARTITIONED BY (p_category STRING,p_brand STRING) //设置分区
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY '-'
TBLPROPERTIES ('creator'='Xiaoming','date'='2019-01-01');
  • 如假设本地文件/home/shoppings.txt内容为:

Hive 表 DML 操作 第1关:将文件中的数据导入(Load)到 Hive 表中

  • 字段间分隔符,根据表中设置FIELDS TERMINATED BY ','确定的。如果表中设置FIELDS TERMINATED BY '\t',那么字段间就应该用Tab键间隔开

  • 集合分隔符-根据表中设置COLLECTION ITEMS TERMINATED BY '-'确定的。如果表中设置COLLECTION ITEMS TERMINATED BY ',',那么字段间就应该用逗号,键间隔开

  • 使用LOAD命令加载本地文件数据到items_info2表相应的分区中(PARTITION关键字指定内容):
load data local inpath '/home/shoppings.txt' overwrite into table items_info2
partition (p_category='shoes',p_brand='playboy');

Hive 表 DML 操作 第1关:将文件中的数据导入(Load)到 Hive 表中

  • 执行LOAD命令后,Hive会在 HDFS 的/hive/shopping/items2/路径下创建目录p_category=shoes/p_brand=playboy/,并且会把items_info.txt文件复制到上述创建的目录下

Hive 表 DML 操作 第1关:将文件中的数据导入(Load)到 Hive 表中

编程要求

student表结构:

INFO TYPE
Sno INT
name STRING
age INT
sex STRING
score STRUCT <Chinese:FLOAT,Math:FLOAT,English:FLOAT>

本地文件/home/student.txt的内容为:

Hive 表 DML 操作 第1关:将文件中的数据导入(Load)到 Hive 表中

  • 创建数据库test1

mysql> create database test1;
Query OK, 1 row affected (0.00 sec)
  • 切换到test1数据库;

mysql> use test1;
Database changed
  • test1中创建相应格式的表student(未分区),表结构如上所示,分隔符根据/home/student.txt的内容设置;

  • /home/student.txt的数据导入到表student中。文章来源地址https://www.toymoban.com/news/detail-427710.html

/********* Begin *********/
create database if not exists test1 location '/hive/test1';
use test1;

create table if not exists test1.student (
    Sno int,
    name string,
    age int,
    sex string,
    score struct <Chinese:float, Math:float, English:float>
)

row format delimited 
fields terminated by ',' 
collection items terminated by '-';

load data local inpath '/home/student.txt' overwrite into table student;

/********* End *********/
select * from student;
  1. 按照以上要求填写命令。每个要求对应一条命令,共4条命令,以;隔开。(请勿删除代码框架)
  2. 由于hive启动时间较长,测评时请耐心等待,大概需要时间:60s左右。

到了这里,关于Hive 表 DML 操作 第1关:将文件中的数据导入(Load)到 Hive 表中的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • HIVE表 DML 操作——第4关:将 select 查询结果写入文件

    第4关:将 select 查询结果写入文件 任务描述 本关任务:根据编程要求将 select 查询结果写入文件。 相关知识 为了完成本关任务,你需要掌握:1.单文件写入,2.多文件写入。 可以把 Hive 查询结果写入或导出到文件中,与查询结果插入到表中类似,导出 Hive 表中的数据到文件

    2024年02月05日
    浏览(32)
  • Apache Doris (三十一):Doris 数据导入(九)Spark Load 4- 导入Hive数据及注意事项

    目录 1. Spark Load导入Hive非分区表数据 2. Spark Load 导入Hive分区表数据 3. 注意事项 进入正文之前,欢迎订阅专题、对博文点赞、评论、收藏,关注IT贫道,获取高质量博客内容!

    2024年02月17日
    浏览(36)
  • 【大数据之Hive】十、Hive之DML(Data Manipulation Language)数据操作语言

    将文件导入Hive表中。 语法: 说明: (1)local:表示从本地加载数据到Hive表;否则从HDFS加载数据到HIve表。 (2)overwrite:表示覆盖表中已有数据,否则表示追加。 (3)partition:表示上传到指定分区,若目标是分区表则需要指定分区。 如: 语法: 说明: (

    2024年02月09日
    浏览(49)
  • Hive——DML(Data Manipulation Language)数据操作语句用法详解

    Load语句可将文件导入到Hive表中。 说明: local : 表示从本地加载数据到Hive表;否则从HDFS加载数据到Hive表 。 overwrite : 表示覆盖表中已有数据,否则表示追加。 partition : 表示上传到指定分区,若目标是分区表,需指定分区 。 本地文件路径: 执行load语句: load da

    2024年04月28日
    浏览(24)
  • 读取hive表中的数据进行数据可视化

    目录 1,目的 2,hive中的操作 2.1创建数据库 2.2,建表并导入数据 2.3,提取需要的数据 2.4,创建新的表并导入上一步所得数据 3,开发web项目 3.1,创建maven的web项目,并导入依赖 3.2,Util工具包 3.3,pojo层 3.4,dao层 3.5,service层 3.6,control层 3.7,配置web.xml 3.8,html页面 4,页面

    2023年04月25日
    浏览(26)
  • 大数据开发之Hive(基本概念、安装、数据类型、DDL数据定义、DML数据操作)

    1.1.1 Hive产生背景 HDFS来存储海量的数据、MapReduce来对海量数据进行分布式并行计算、Yarn来实现资源管理和作业调度。但是面对海量的数据和负责的业务逻辑,开发人员要编写MR对数据进行统计分析难度极大,所以就产生了Hive这个数仓工具。Hive可以帮助开发人员将SQL语句转化

    2024年01月17日
    浏览(30)
  • Hive 表 DML 操作

    导入命令语法: Load 操作执行 copy/move 命令把数据文件 copy/move 到 Hive 表位于 HDFS 上的目录位置,并不会对数据内容执行格式检查或格式转换操作。 Load 命令语法为: LOAD DATA [LOCAL] INPATH \\\'filepath\\\' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=vall,partcol2=val2 …)]; 文件路径 filepath 可以是

    2024年02月06日
    浏览(36)
  • Hive 常用DML操作

    本专栏案例数据集链接:   https://download.csdn.net/download/shangjg03/88478038  LOCAL 代表从本地文件系统加载文件,省略则代表从 HDFS 上加载文件: 从本地文件系统加载文件时, `filepath` 可以是绝对路径也可以是相对路径 (建议使用绝对路径); 从 HDFS 加载文件时候,`

    2024年02月07日
    浏览(28)
  • [详细步骤]Java将Excel文件导入到数据库表中、并使用postman测试

    1、Maven依赖添加 2、需要使用的类 controller:ExcelController entity:ExcelEntity(设计此实体类,需要与excel文件一一对应) mapper:ExcelMapper service:ExcelServiceImpl、ExcelService util:ReadExcelUtil 3、代码 4、postman测试 file(excel)的文件路径需真实存在,下图进行设置路径、我的excel放在了

    2024年02月07日
    浏览(34)
  • 【大数据】Hive 中的批量数据导入

    在博客【大数据】Hive 表中插入多条数据 中,我简单介绍了几种向 Hive 表中插入数据的方法。然而更多的时候,我们并不是一条数据一条数据的插入,而是以批量导入的方式。在本文中,我将较为全面地介绍几种向 Hive 中批量导入数据的方法。 overwrite :表示覆盖表中已有数

    2024年02月11日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包