本文介绍如何将文本文件中的数据通过ODI导入Hive数据仓库。

一、Hive上创建目标表

1.1 源表定义

CREATE TABLE EXAM_SCORE
(
  ID            NUMBER(4),
  AREA_ID       NUMBER(1),
  EXAM_INFO_ID  NUMBER(3),
  STU_SEQUENCE  NUMBER(12),
  SCORE         NUMBER(3),
  SUBJECT_ID    NUMBER(3),
  CLASS_ID      NUMBER(6)
)

1.2 目标表定义

CREATE TABLE hivedb.exam_score
(
  ID            string,
  AREA_ID       string,
  EXAM_INFO_ID  string,
  STU_SEQUENCE  string,
  SCORE         string,
  SUBJECT_ID    string,
  CLASS_ID      string
);

二、构造映射关系

2.1 新建Hive模型

如下图所示,输入相关参数后,先保存,然后点击“Reverse Engineer”,同步表结构。
Loading Data Into Hive From File By ODI 12c_第1张图片

2.2 新建File模型

Definition选项栏:
Loading Data Into Hive From File By ODI 12c
Files选项栏:
Loading Data Into Hive From File By ODI 12c_第2张图片
Attributes选项栏:
Loading Data Into Hive From File By ODI 12c_第3张图片

2.3 创建映射关系图

拖动文件模型和hive模型,组成下图中的映射关系:
Loading Data Into Hive From File By ODI 12c_第4张图片
其中,LKM选择“LKM File to Hive LOAD DATA.GLOBAL”,如果文件在本地,则设置“FILE_IS_LOCAL”的值为“True”,如下图:
Loading Data Into Hive From File By ODI 12c_第5张图片
其中、IKM选择“IKM Hive Incremental Update.GLOBAL”,如果要清空表中现有数据,则设置TRUNCATE的值为True即可,如下图:
Loading Data Into Hive From File By ODI 12c_第6张图片
最后保存所有更改。

2.4 执行映射

Loading Data Into Hive From File By ODI 12c_第7张图片
执行结果如下图:
Loading Data Into Hive From File By ODI 12c_第8张图片