Hive ETL:加载 JSON、XML、文本数据示例

Hive 作为 ETL 和数据仓库工具 Hadoop的 生态系统提供数据建模、数据操作、数据处理和数据查询等功能。Hive 中的数据提取意味着在 Hive 中创建表并加载结构化和半结构化数据以及根据要求查询数据。

对于批处理,我们将使用自定义映射编写自定义脚本,并使用脚本语言编写 Reduce 脚本。它提供 SQL 喜欢环境并支持轻松查询。

使用 Hive 处理结构化数据

结构化数据意味着数据采用正确的行和列格式。这更像是 RDBMS 具有适当行和列的数据。

在这里,我们将加载 Hive 中文本文件中的结构化数据

步骤1) 在此步骤中,我们创建表“employees_guru”,其列名包括员工的 Id、姓名、年龄、地址、薪水和部门以及数据类型。

使用 Hive 处理结构化数据

从上面的截图中,我们可以观察到以下内容,

  1. 创建表“employees_guru”
  2. 将 Employees.txt 中的数据加载到表“employees_guru”中

步骤2) 在此步骤中,我们使用“选择”命令显示存储在此表中的内容。我们可以在下面的屏幕截图中观察表格内容。

使用 Hive 处理结构化数据

– 示例代码片段

要执行的查询

1) Create table employees_guru(Id INT, Name STRING, Age INT, Address STRING, Salary FLOAT, Department STRING)
> Row format delimited
> Fields terminated by ',';
2) load data local inpath '/home/hduser/Employees.txt' into TABLE employees_guru;
3) select * from employees_guru;

使用 Hive 处理半结构化数据(XML、JSON)

Hive 在 Hadoop 生态系统中充当 ETL 功能 ETL工具。在某些类型的应用程序中执行 map Reduce 可能会很困难,Hive 可以降低复杂性并为数据仓库领域的 IT 应用程序提供最佳解决方案。

使用 Hive 可以更轻松地处理 XML 和 JSON 等半结构化数据。首先,我们将了解如何使用 Hive 进行 XML.

XML 到 HIVE 表

在此,我们将把 XML 数据加载到 Hive 表中,并获取存储在 XML 标签内的值。

步骤1) 创建表“xmlsample_guru”,其中 str 列具有字符串数据类型。

使用 Hive 处理半结构化数据

从上面的截图中,我们可以观察到以下内容

  1. 创建表“xmlsample_guru”
  2. 将数据从 test.xml 加载到表“xmlsample_guru”中

步骤2) 运用 XPath的 () 方法我们将能够获取存储在 XML 标签内的数据。

使用 Hive 处理半结构化数据

从上面的截图中,我们可以观察到以下内容

  1. 使用 XPATH() 方法,我们获取存储在 /emp/esal/ 和 /emp/ename/ 下的值
  2. XML 标签内的值。在此步骤中,我们将显示表“xmlsample_guru”中 XML 标签下存储的实际值

步骤3) 在此步骤中,我们将获取并显示表“xmlsample_guru”的原始 XML。

使用 Hive 处理半结构化数据

从上面的截图中,我们可以观察到以下内容

  • 使用标签显示的实际 XML 数据
  • 如果我们观察单个标签,它以“emp”作为父标签,以“ename”和“esal”作为子标签。

代码片段:

要执行的查询

1) create table xmlsample_guru(str string);                                                                                                   2) load data local inpath '/home/hduser/test.xml' overwrite  into table xmlsample_guru;
3) select xpath(str,'emp/ename/text()'), xpath(str,'emp/esal/text()') from xmlsample_guru;

JSON(Java脚本对象符号)

Twitter 和网站数据以 JSON 格式存储。每当我们尝试从在线服务器获取数据时,它都会返回 JSON 文件。使用 Hive 作为数据存储,我们可以通过创建模式将 JSON 数据加载到 Hive 表中。

JSON 到 HIVE 表

在此,我们将把 JSON 数据加载到 Hive 表中,并获取存储在 JSON 模式中的值。

步骤1) 在此步骤中,我们将创建名为“json_guru”的 JSON 表。创建后,加载并显示实际架构的内容。

Json 到 Hive 表

从上面的截图中,我们可以观察到以下内容

  1. 创建表“json_guru”
  2. 将数据从 test.json 加载到表“json_guru”中
  3. 显示存储在 json_guru 表中的 JSON 文件的实际架构

步骤2) 使用 get_json_object() 方法,我们可以获取存储在 JSON 层次结构中的数据值

Json 到 Hive 表

从上面的屏幕截图我们可以观察到以下内容

  1. 使用 get_json_object (str,'$.ecode) 它可以从表 json_guru 中获取 ecode 值。类似地,使用 get_json_object (str,'$.ename) ,get_json_object (str,'$.Sali) 它将获取表 json_guru 中的 ename sal 值
  2. json_guru 中 JSON 层次结构内存储的值

代码段

要执行的查询

1) create table json_guru(str string);
2) load data inpath 'home/hduser/test.json' into table json_guru;
3) select * from json1;
4) select get_json_object(str,'$.ecode') as ecode, get_json_object(str,'$.ename') as ename ,get_json_object(str,'$.sal') as salary from json_guru;

复杂 JSON 到 HIVE 表

在此,我们将把复杂的 JSON 数据加载到 Hive 表中,并获取存储在 JSON 模式中的值

步骤1) 使用单列字段创建 complexjson_guru

复杂 Json 到 Hive 表

从上面的截图中,我们可以观察到以下内容

  1. 在表 complexjson_guru 上创建单列字段为字符串数据类型
  2. 从 emp.json 复杂 JSON 文件将数据加载到 complexjson_guru

步骤2) 通过使用 get_json_object 我们可以检索存储在 JSON 文件层次结构中的实际内容。

从下面的截图中,我们可以看到存储在complexjson_guru中的数据的输出。

复杂 Json 到 Hive 表

步骤3) 在此步骤中,通过使用“选择”命令,我们实际上能够看到存储在表“complexjson_guru”中的复杂 JSON 数据

复杂 Json 到 Hive 表

-示例代码片段,

要执行的查询

1) create table complexjson_guru(json string);
2) load data inpath 'home/hduser/emp.json' into table complexjson_guru;
3) select get_json_object(json,'$.ecode') as ecode ,get_json_object(json,'$.b') as code, get_json_object(json,'$.c') from complexjson_guru;
4) select * from complexjson_guru;

实时项目中的 Hive – 何时何地使用

何时何地在 Hadoop 生态系统中使用 Hive:

在规划婴儿食品行业的工艺要求时,安全性和可靠性是工艺设计中最重要的方面。

  • 在 Hadoop 生态系统中使用强大的统计函数时
  • 在处理结构化和半结构化数据时
  • 作为 Hadoop 的数据仓库工具
  • 可以使用 HBASE、Hive 进行实时数据提取

其中

  • 为了方便使用 ETL 和数据仓库工具
  • 提供 SQL 类型环境并使用 HIVEQL 进行类似 SQL 的查询
  • 根据特定客户端需求使用和部署自定义的 map 和 Reducer 脚本