大数据中怎么来加载数据呢?数据加载应该注意哪些问题呢?关系型数据库和Impala、Hive加载数据有哪些区别呢?

在了解加载数据之前必须明确一个概念“数据验证”, Impala和Hive与其他关系型数据库不一样,关系型数据库是在写的时候进行校验,比如我们创建一个表,当去给它加载数据的时候,它会去验证数据以及数据类型是不是符合要求,如果不符合,数据就加载不了。

在Hive和Impala中,它在读的时候进行校验。为什么会这样设计呢?主要是为了提升写的速度和加载的效率。那么,这样检验数据会不会出错呢?当然不会,如果你查询不到这个数据,它会以“null”来表达。如果要对查询可靠性进行保证,保证每个数据都能查到和匹配,可以通过其它的工程语言在前端进行一个保证。

一、从HDFS加载数据

(1)为了加载数据,可以简单地添加文件到HDFS的表目录,这个直接使用hdfs dfs命令完成

示例:从HDFS加载数据到sales表

wKioL1hsafCBBZnKAABI3VmlxJ8450.png-wh_50

(2)使用LOAD DATA INPATH命令,在Hive或者Impala里完成。这个操作将在HDFS内移动数据,就像前面的命令一样,数据源可以是文件或目录。

wKiom1hsaf3xfQrJAABF3OaYsN8018.png-wh_50

二、覆盖数据

(1)添加OVERWRITE关键字在导入之前删除所有记录。就是在表目录内移除所有文件,然后把新文件移动到那个目录。

wKiom1hsagjwyLjpAABXHzQsOKQ012.png-wh_50

三、追加选择的记录到表中

(1)通过查询插入数据

1、使用INSERT INTO来添加结果到已存在的Hive表中

wKioL1hsahrz8p9cAABIIq--py4878.png-wh_50

2、指定WHERE条件来控制哪些记录将被追加

wKioL1hsaibSEGv-AACN9NDnCa4186.png-wh_50

四、使用元数据库管理器加载数据

(1)元数据管理器提供了两种方法来加载数据

数据加载的妙招解析_第1张图片

五、从关系型数据库加载数据

Sqoop内嵌支持导入数据到Hive和Impala,可以添加--hive-import选项到Sqoop命令,在Hive元数据库中创建表,从RDBMS导入数据到HDFS表目录。

数据加载的妙招解析_第2张图片

注意--hive-import创建的表在Hive和Impala中都可以访问


有问题,随时来,还有同行共欢聚,大家一起聊!

欢迎关注微信公众号“大数据cn”。