好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

使用 Oracle Load For Hadoop(OLH)实现数据湖到Oracle数据库数据集成

1 前言

????

????企业在建设数据平台过程中,凭借大数据解决方案,企业能够收集处理大量低结构化的原始数据(如 ?Web ?日志、社交媒体数据、电子邮件、传感器数据和位置数据),它们可以为业务应用程序提供丰富的实用信息。同时,在企业中关系数据库(大多数商业应用所采用的平台)中包含一些关键数据。在实施全数据分析的过程中,通常需要结合关系数据库中的数据和Hadoop数据池数据,从而获取更深入的洞察。

????然而,Hadoop 上的数据必须经过一系列技术和工具(即“连接器”)的处理后才可由数据库进行分析。本文主要描述了如何实现快速加载Hadoop上的海量数据导入到Oracle关系数据库中,以帮助企业实现真正的全数据分析。

2??Oracle Big Data Connector介绍

2.1?Oracle Big Data Connectors介绍

??? ?Oracle Big Data Connectors 是Oracle开发的一个用于集成 Apache Hadoop 发行版与 Oracle ?数据库的软件套件。它赋予了使用 Hadoop 处理和分析大量数据,同时结合使用Oracle数据库数据以获得新的关键业务洞察的能力。?

Oracle ?Big Data Connectors 将 Hadoop 与 Oracle 数据库连接在一起,并针对 Hadoop 和 Oracle ?数据库进行了优化,为大数据解决方案提供了必要的基础架构。它包括将数据从 Hadoop 快速加载到 Oracle 数据库的工具、在 Hadoop 与 ?Oracle 数据库之间进行数据访问的工具,以及在 Hadoop 中执行 R 和 XML ?分析的工具,以支持信息发现、深度分析,以及企业中所有数据的快速集成。

这个软件套件包含以下组件:

Oracle Loader for Hadoop

Oracle SQL Connector for Hadoop Distributed File System (HDFS)

Oracle Data source for Apache Hadoop

Oracle Advanced Analytics for Hadoop

Oracle XQuery for Hadoop

?

Oracle Big Data Connectors 同时支持企业私有部署和云部署,为大数据应用程序提供了丰富的特性、安全性和高速连通性。

?

?

本文主要介绍了其中的OracleLoader for Hadoop(OLH)这个组件,实现了将Hadoop数据快速导入到Oracle数据库的数据集成能力。

2.2?Oracle Loader For Hadoop介绍

Oracle ?Loader for Hadoop(OLH) 是一个可将数据从 Hadoop 快速导入Oracle 数据库的高性能加载工具。Oracle ?Loader for Hadoop实现原理是在Hadoop 上利用Hadoop ?计算资源对数据进行分类、分区、数据类型转换,然后再加载到数据库中。首先,OLH将数据转换为Oracle 类型减少了加载过程中对数据库 CPU ?的使用,从而极大地减少了对数据库应用程序的影响。其次,OLH采用了创新的采样技术,可智能地将数据采集分布到各个Hadoop节点,同时以并行方式加载数据。第三,OLH ?它本身可以支持多种来源加载数据:文本文件、Hive 表、日志文件(解析并加载)、Oracle NoSQL Database ?等。此外,Oracle Loader for Hadoop 还可以通过用户提供的自定义输入格式实现来读取专有的数据格式。

其中OLH具备以下一些特点:

OLH 加载选项描述:

Oracle ?Loaderfor Hadoop 提供了联机和脱机加载选项。使用联机加载选项时,预处理数据和将数据加载到数据库都是 OracleLoader ?for Hadoop 作业的必要环节。每项化简任务都会与 Oracle 数据库建立一个连接,从而并行地将数据加载到数据库。数据库必须在 ?Oracle Loader for Hadoop 执行处理期间维持可用性。

使用脱机加载选项时,每个化简任务都会创建一个写入到 HDFS 的 Oracle 数据泵文件。在此期间,数据库可以处于脱机状态。随后,用户可以使用 Oracle Direct Connector for HDFS 将数据加载到数据库中。

本文主要介绍了联机加载选项。

3?? Oracle Load For Hadoop(OLH)安装配置

3.1?部署结构图

OLH ?作为一个Java ?Application,通过运行Mapreduce作业,利用大数据平台的分布式计算能力,完成对Hadoop上的文件进行数据读取,类型识别和转换工作,采用数据流的方式,将数据从Hadoop上采集后通过数据库OCI接口写入Oracle数据库中,从而实现Oracle数据表加载来自Hadoop大数据平台HDFS、Hive等的数据。

因此,OLH的部署可以采用单独环境部署,在Hadoop任意节点部署,在Oracle任意数据库节点部署的方式。

?

3.2? 安装准备

Hadoop平台版本:HDP 3.1.4.0-315

Oracle 版本:Oracle 19.8

Oracle Loader forHadoop Release 5.1.1安装介质下载:

https://download.oracle测试数据/otn/other/bigdata/oraloader-5.1.1.x86_64.zip

?

IP

名称

描述

10.0.0.2

Master

Hadoop Namenode

10.0.0.3

Datanode1

Hadoop Datanode

10.0.0.4

Datanode2

Hadoop Datanode

10.0.0.5

Datanode3

Hadoop Datanode

10.0.0.6

bigdata-db-1

Oracle数据库和OLH运行环境

?

3.3? 配置Hadoop和Hive客户端

在OLH 运行环境进行操作,配置Hadoop和Hive客户端。

?

1.把HDP 1号节点的mapreduce.tar.gz文件上传到OLH 运行环境端的/u01/bdc目录:

scp?/usr/hdp/current/hadoop-client/mapreduce.tar.gz?root@10.0.0.6:/u01/bdc

在OLH 运行环境解压到/u01/bdc目录

?

2.把HDP 1号节点/usr/hdp/current/hive-client/hive.tar.gz文件上传到OLH 运行环境的/u01/bdc目录

scp?/usr/hdp/current/hive-client/hive.tar.gz?root@10.0.0.6:/u01/bdc

在OLH 运行环境解压到/u01/bdc目录

?

3.进入HDP 1号节点,把/usr/hdp/3.1.4.0-315目录下的所有包生成tar包.

tar?-czvf/usr/hdp/3.1.4.0-315.tar.gz?/usr/hdp/3.1.4.0-315/*

并把3.1.4.0-315.tar.gz文件传到OLH 运行环境的/u01/bdc目录

scp?/usr/hdp/3.1.4.0-315.tar.gz?root@10.0.0.6:/u01/bdc

?在OLH 运行环境解压到/usr/hdp目录,解压之后的路径如下:

4.在Ambari中下载hdfs和hive的客户端配置文件,并把配置文件放到OLH 运行环境的/u01/bdc目录中

解压之后目录结构如下:

?

5. 配置环境变量~/.bash_profile

使用oracle用户登陆操作系统,增加如下环境变量:

 export HADOOP_HOME=/u01/bdc/hadoop  export HADOOP_CONF_DIR=/u01/bdc/hadoop-conf  export HIVE_HOME=/u01/bdc/hive  export HIVE_CONF_DIR=/u01/bdc/hive-conf  export JAVA_HOME=/usr/local/jdk1.8.0_261     export PATH=$HADOOP_HOME/bin:$HIVE_HOME/bin:$OSCH_HOME/bin:$PATH  export?HADOOP_CLASSPATH=:$HIVE_HOME/lib/*:$HADOOP_CLASSPATH 

6. 验证,执行hdfs dfs –ls / 能查看到hdfs中的目录,说明配置成功。

3.4?安装配置Oracle数据库客户端

在OLH运行环境中,安装配置Oracle数据库客户端。

?

3.5?配置OLH运行环境

1.?把下载的olh包上传到安装节点的/u01/bdc目录,并解压,解压之后的目录如下:

2. 配置环境变量,增加如下环境变量。

export?OLH_HOME=/u01/bdc/orahdfs-5.0.0export?PATH=$HADOOP_HOME/bin:$HIVE_HOME/bin:$OLH_HOME/bin:$PATHexport?HADOOP_CLASSPATH=$OLH_HOME/jlib/*:$HADOOP_HOME/lib/*:$HIVE_HOME/lib/*:$HADOOP_CLASSPATH

配置之后的环境变量如下:

3.6? DB端创建数据导入用户

在Oracle数据库中创建bdcdemo用户,并赋予相应的权限,用于数据导入操作。

sqlplus?/?as?sysdba;create?user?bdcdemo?identified?by?welcome1;grant?connect?to?bdcdemo;grant?resource?to?bdcdemo;grant?dba?to?bdcdemo;grant?CREATE?TABLE,CREATE?VIEW,CREATE?SESSION,ALTER?SESSION?to?bdcdemo;GRANT?EXECUTE?ON?sys.utl_file?TO?bdcdemo;

4??Oracle Load For Hadoop 测试

4.1? 准备测试数据

测试数据为Text格式的文本文件part-r-00000。

测试数据如下:

把数据上传到hdfs中的/user/oracle/bdws/olh/data目录:

hdfs?dfs?-mkdir?/user/oracle/bdws/olh/datahdfs?dfs?-put?/u01/bdc/bdws/olh/data/*/user/oracle/bdws/olh/data

?

4.2? HDFS TEXTFILE文件测试

1. 使用sqlplus创建Oracle 表作为导入目标表。

 sqlplus bdcdemo/welcome1@10.0.0.6:1521/orcl  DROP TABLE OLH_DEMO_OCI;  CREATE TABLE OLH_DEMO_OCI  (  "SESSION_ID" NUMBER,  "TIME_ID" DATE,  "CUST_ID" ? ? ? ? ? ? NUMBER,  "DURATION_SESSION" ? ?NUMBER,  "NUM_RATED" ? ? ? ? ? NUMBER,  "DURATION_RATED" ? ? ?NUMBER,  "NUM_COMPLETED" ? ? ? NUMBER,  "DURATION_COMPLETED" ?NUMBER,  "TIME_TO_FIRST_START" NUMBER,  "NUM_STARTED" ? ? ? ? NUMBER,  "NUM_BROWSED" ? ? ? ? NUMBER,  "DURATION_BROWSED" ? ?NUMBER,  "NUM_LISTED" ? ? ? ? ?NUMBER,  "DURATION_LISTED" ? ? NUMBER,  "NUM_INCOMPLETE" ? ? ?NUMBER,  "NUM_SEARCHED" ? ? ? ?NUMBER  )  PARTITION BY HASH(CUST_ID);    

2. 创建导入配置xml文件,olh_demo_oci.xml,文件内容如下:

 <?xml version="1.0" encoding="UTF-8" ?>  <configuration>     <!-- ? ? ? ? ? ? ?Input settings ? ? ? ? ? ? ? ? ? ? -->  <property>  <name>mapreduce.inputformat.class</name>  <value>oracle.hadoop.loader.lib.input.DelimitedTextInputFormat</value>  </property>     <property>  <name>mapred.input.dir</name>  <value>/user/oracle/bdws/olh/data</value>  </property>     <property>  <name>oracle.hadoop.loader.input.fieldTerminator</name>  <value>\u0009</value>  </property>     <!-- ? ? ? ? ? ?Output settings ? ? ? ? ? ? ? ? ? ? -->  <property>  <name>mapreduce.outputformat.class</name>  <value>oracle.hadoop.loader.lib.output.OCIOutputFormat</value>  </property>  <property>  <name>mapred.output.dir</name>  <value>temp_out_session</value>  </property>     <!-- ? ? ? ?Table information ? ? ? ? ? -->  <property>  <name>oracle.hadoop.loader.loaderMap.targetTable</name>  <value>olh_demo_oci</value>  </property>     <property>  <name>oracle.hadoop.loader.input.fieldNames</name>  <value>SESSION_ID,TIME_ID,CUST_ID,DURATION_SESSION,NUM_RATED,DURATION_RATED,NUM_COMPLETED,DURATION_COMPLETED,TIME_TO_FIRST_START,NUM_STARTED,NUM_BROWSED,DURATION_BROWSED,NUM_LISTED,DURATION_LISTED,NUM_INCOMPLETE,NUM_SEARCHED</value>  </property>     <property>  <name>oracle.hadoop.loader.defaultDateFormat</name>  <value>yyyy-MM-dd:HH:mm:ss</value>  </property>     <!-- ? ? ? ?Connection information ? ? ? ? ? ? -->     <property>  <name>oracle.hadoop.loader.connection.url</name>  <value>jdbc:oracle:thin:@${HOST}:${TCPPORT}/${SERVICE_NAME}</value>  </property>  <property>  <name>TCPPORT</name>  <value>1521</value>  </property>  <property>  <name>HOST</name>  <value>localhost</value>  </property>  <property>  <name>SERVICE_NAME</name>  <value>orcl</value>  </property>  <property>  <name>oracle.hadoop.loader.connection.user</name>  <value>bdcdemo</value>  </property>  <property>  <name>oracle.hadoop.loader.connection.password</name>  <value>welcome1</value>  <description> Having password in cleartext is NOT RECOMMENDED - use Oracle Wallet instead </description>  </property>     <property>  <name>oracle.hadoop.loader.logBadRecords</name>  <value>true</value>  </property>     </configuration> 

3. 创建导入脚本olh_demo_oci.sh,脚本内容如下:

 export HADOOP_CLASSPATH="$OLH_HOME/jlib/*:$HIVE_HOME/lib/*:/etc/hive/conf:$HADOOP_CLASSPATH"     hdfs dfs -rm -r -f /user/oracle/temp_out_session  hadoop jar ${OLH_HOME}/jlib/oraloader.jar \   ? ? ? oracle.hadoop.loader.OraLoader \   ? ? ? -conf /u01/bdc/bdws/olh/olh_demo_oci.xml \  ???????-D?mapred.reduce.tasks=2 

4. 也可以不使用xml配置文件,直接创建脚本进行执行,例如:

 $ cat olh_hdfs_txt.sh  #!/bin/bash     export HADOOP_CLASSPATH="${OLH_HOME}/jlib/*:${HIVE_HOME}/lib/*:/etc/hive/conf:$HADOOP_CLASSPATH"     export OUTPUT_DIR=/user/hive/temp_out_text  hdfs dfs -rm -r -f $OUTPUT_DIR     hdfs dfs -rm -r -f $OUTPUT_DIR  hadoop jar ${OLH_HOME}/jlib/oraloader.jar \   ? oracle.hadoop.loader.OraLoader \   ?-D mapred.reduce.tasks=2 \   ?-D mapreduce.inputformat.class=oracle.hadoop.loader.lib.input.DelimitedTextInputFormat \   ?-D mapred.input.dir='/user/oracle/bdws/olh/data' \   ?-D oracle.hadoop.loader.input.fieldTerminator='\u0009' \   ?-D mapreduce.outputformat.class=oracle.hadoop.loader.lib.output.OCIOutputFormat \   ?-D oracle.hadoop.loader.connection.url='jdbc:oracle:thin:@${HOST}:${TCPPORT}/${SERVICE_NAME}' \   ?-D TCPPORT=1521 \   ?-D HOST=10.0.0.3 \   ?-D SERVICE_NAME=orcl \   ?-D oracle.hadoop.loader.connection.user=bdcdemo \   ?-D oracle.hadoop.loader.connection.password=welcome1 \   ?-D oracle.hadoop.loader.loaderMap.targetTable=olh_demo_oci \   ?-D oracle.hadoop.loader.input.fieldNames=SESSION_ID,TIME_ID,CUST_ID,DURATION_SESSION,NUM_RATED,DURATION_RATED,NUM_COMPLETED,DURATION_COMPLETED,TIME_TO_FIRST_START,NUM_STARTED,NUM_BROWSED,DURATION_BROWSED,NUM_LISTED,DURATION_LISTED,NUM_INCOMPLETE,NUM_SEARCHED \   ?-D oracle.hadoop.loader.defaultDateFormat='yyyy-MM-dd:HH:mm:ss' \   ?-D oracle.hadoop.loader.logBadRecords=true \  ??-D?mapred.output.dir=$OUTPUT_DIR 

5. 执行数据装载操作

用oracle用户进入 /u01/bdc/bdws/olh目录,执行olh_demo_oci.sh 脚本:

6. 验证数据,执行如下脚本 :

sqlplus?bdcdemo/welcome1@10.0.0.3:1521/orclset?linesize?200;set?pages?200;select?count(1)?from?olh_demo_oci;select?SESSION_ID,?CUST_ID?from?olh_demo_oci?where?rownum<=10;

执行结果如下 :

?

4.3? Hive表数据同步测试

1. 准备数据集,在Hive中执行如下脚本:

 use bdws;     drop table EXT_OLH_DEMO_OCI;  CREATE EXTERNAL TABLE EXT_OLH_DEMO_OCI  (  SESSION_ID String,  TIME_ID String,  CUST_ID ? ? ? ? ? ? String,  DURATION_SESSION ? ?String,  NUM_RATED ? ? ? ? ? String,  DURATION_RATED ? ? ?String,  NUM_COMPLETED ? ? ? String,  DURATION_COMPLETED ?String,  TIME_TO_FIRST_START String,  NUM_STARTED ? ? ? ? String,  NUM_BROWSED ? ? ? ? String,  DURATION_BROWSED ? ?String,  NUM_LISTED ? ? ? ? ?String,  DURATION_LISTED ? ? String,  NUM_INCOMPLETE ? ? ?String,  NUM_SEARCHED ? ? ? ?String  )STORED AS ORC  LOCATION '/user/oracle/bdws/olh/data';     #Txt file, hive managed table  create table OLH_DEMO_TXT stored as textfile as select * from EXT_OLH_DEMO_OCI;     #orc file, hive managed table  create table OLH_DEMO_ORC stored as orc as select * from EXT_OLH_DEMO_OCI;     #Parquet file, hive managed table  create?table?OLH_DEMO_parquet?stored?as?parquet?as?select?*?from?EXT_OLH_DEMO_OCI; 

2. 查询Hive 表数据

select?SESSION_ID,time_id,cust_id?from?OLH_DEMO_ORC?limit?10;select?count(1)?from?OLH_DEMO_TXT;select?count(1)?from?OLH_DEMO_ORC;select?count(1)?from?OLH_DEMO_parquet;

数据存放的位置如下:

Hive 外部表, Txt file: /user/oracle/bdws/olh/data

Hive 管理表, Txt file: /warehouse/tablespace/managed/hive/bdws.db/olh_demo_txt

Hive 管理表,Orc file:

Hive 管理表,Parquet file:

3. 创建Oracle目标数据表

使用sqlplus登录到DB节点执行创建Oracle数据库表,用于数据装载。

 sqlplus bdcdemo/welcome1@10.0.0.6:1521/orcl     DROP TABLE OLH_DEMO_ORC;  CREATE TABLE OLH_DEMO_ORC  (  "SESSION_ID" VARCHAR2(100),  "TIME_ID" VARCHAR2(100),  "CUST_ID" ? ? ? ? ? ? VARCHAR2(100),  "DURATION_SESSION" ? ?VARCHAR2(100),  "NUM_RATED" ? ? ? ? ? VARCHAR2(100),  "DURATION_RATED" ? ? ?VARCHAR2(100),  "NUM_COMPLETED" ? ? ? VARCHAR2(100),  "DURATION_COMPLETED" ?VARCHAR2(100),  "TIME_TO_FIRST_START" VARCHAR2(100),  "NUM_STARTED" ? ? ? ? VARCHAR2(100),  "NUM_BROWSED" ? ? ? ? VARCHAR2(100),  "DURATION_BROWSED" ? ?VARCHAR2(100),  "NUM_LISTED" ? ? ? ? ?VARCHAR2(100),  "DURATION_LISTED" ? ? VARCHAR2(100),  "NUM_INCOMPLETE" ? ? ?VARCHAR2(100),  "NUM_SEARCHED" ? ? ? ?VARCHAR2(100)  )  PARTITION BY HASH(CUST_ID);    

4. 创建导入配置的xml文件,olh_demo_orc.xml,文件内容如下:

 <?xml version="1.0" encoding="UTF-8" ?>  <configuration>     <!-- ? ? ? Input settings ? ? ? ? ? ?-->     <property>  <name>mapreduce.inputformat.class</name>  <value>oracle.hadoop.loader.lib.input.HiveToAvroInputFormat</value>  </property>     <property>  <name>oracle.hadoop.loader.input.hive.databaseName</name>  <value>bdws</value>  </property>     <property>  <name>oracle.hadoop.loader.input.hive.tableName</name>  <value>olh_demo_orc</value>  </property>     <!-- ? ? ? ?Output settings ? ? ? ? ? ? ?-->  <property>  <name>mapreduce.outputformat.class</name>  <value>oracle.hadoop.loader.lib.output.OCIOutputFormat</value>  </property>     <!--property>   ? <name>mapred.output.dir</name>   ? <value>temp_out_session</value>   </property-->     <!-- ? ? ? ? ? Table information ? ? ? ? ? ? ? ? ?-->     <property>  <name>oracle.hadoop.loader.loaderMap.targetTable</name>  <value>olh_demo_oci</value>  </property>     <property>  <name>oracle.hadoop.loader.defaultDateFormat</name>  <value>yyyy-MM-dd:HH:mm:ss</value>  </property>     <!-- ? ? ? ? ? Connection information ? ? ? ? ? ?-->  <property>  <name>oracle.hadoop.loader.connection.url</name>  <value>jdbc:oracle:thin:@${HOST}:${TCPPORT}/${SERVICE_NAME}</value>  </property>     <property>  <name>TCPPORT</name>  <value>1521</value>  </property>     <property>  <name>HOST</name>  <value>localhost</value>  </property>     <property>  <name>SERVICE_NAME</name>  <value>orcl</value>  </property>     <property>  <name>oracle.hadoop.loader.connection.user</name>  <value>bdcdemo</value>  </property>     <property>  <name>oracle.hadoop.loader.connection.password</name>  <value>welcome1</value>  <description> Having password in cleartext is NOT RECOMMENDED - use Oracle Wallet instead </description>  </property>     <property>  <name>oracle.hadoop.loader.logBadRecords</name>  <value>true</value>  </property>  </configuration> 

5. 创建导入脚本olh_demo_orc.sh,脚本内容如下:

 export HADOOP_CLASSPATH="$OLH_HOME/jlib/*:$HIVE_HOME/lib/*:/etc/hive/conf:$HADOOP_CLASSPATH"     export OUTPUT_DIR=/user/oracle/temp_out_text1  hdfs dfs -rm -r -f $OUTPUT_DIR     hadoop jar ${OLH_HOME}/jlib/oraloader.jar \   ? ? ? oracle.hadoop.loader.OraLoader \   ? ? ? -conf /u01/bdc/bdws/olh/olh_demo_orc.xml \   ? ? ? ?-D mapred.output.dir=$OUTPUT_DIR \   ? ? ? -D mapred.reduce.tasks=1 \   ? ? ? -D hive.transactional.table.scan=true \   ? ? ? -D 'hive.txn.valid.txns=9223372036854775807:9223372036854775807::' \   ? ? ? -D 'schema.evolution.columns=${columns}' \  ???????-D?'schema.evolution.columns.types=${columns.types}' 

6. 也可以不使用xml配置文件,直接创建脚本进行执行,例如:

 [oracle@bigdata-db-1 olh]$ cat olh_hive_orc.sh  #!/bin/bash     export HADOOP_CLASSPATH="${OLH_HOME}/jlib/*:${HIVE_HOME}/lib/*:$HADOOP_CLASSPATH"     export OUTPUT_DIR=/user/hive/temp_out_text  hdfs dfs -rm -r -f $OUTPUT_DIR     hadoop jar ${OLH_HOME}/jlib/oraloader.jar \   ? oracle.hadoop.loader.OraLoader \   ?-D mapred.reduce.tasks=2 \   ?-D oracle.hadoop.loader.targetTable=olh_demo_orc \   ?-D oracle.hadoop.loader.input.hive.databaseName=bdws \   ?-D oracle.hadoop.loader.input.hive.tableName=OLH_DEMO_orc \   ?-D oracle.hadoop.loader.connection.url=jdbc:oracle:thin:@10.0.0.3:1521/orcl \   ?-D oracle.hadoop.loader.connection.user=bdcdemo\   ?-D oracle.hadoop.loader.connection.password=welcome1 \   ?-D mapreduce.inputformat.class=oracle.hadoop.loader.lib.input.HiveToAvroInputFormat \   ?-D mapreduce.outputformat.class=oracle.hadoop.loader.lib.output.OCIOutputFormat \   ?-D hive.transactional.table.scan=true \   ?-D 'hive.txn.valid.txns=9223372036854775809:9223372036854775809::' \   ?-D 'schema.evolution.columns=${columns}' \   ?-D 'schema.evolution.columns.types=${columns.types}' \  ??-D?mapred.output.dir=$OUTPUT_DIR 

7.?执行数据导入操作

?

8. 验证导入数据?:

sqlplus?bdcdemo/welcome1@10.0.0.3:1521/orclset?linesize?200;set?pages?200;select?count(1)?from?olh_demo_orc;select?SESSION_ID,?CUST_ID?from?olh_demo_orc?where?rownum<=10;

结果如下 :

?

5??常见问题

1、是否支持中文数据导入?

OLH导入HDFS文本文件方式下,OLH支持导入UTF8格式文件,其中Oracle数据库使用AL32UTF8编码。

OLH 导入Hive 表数据,Oracle数据库使用AL32UTF8编码,可以支持中文数据导入。

?

2、OLH是否支持文本文件中字段分割符为多字节。

OLH不支持文本中字段分割符为多字节,另外一个Oracle SQL connector for Hadoop可以支持。

?

3、OLH 是否支持文件中第一行为表头。

??? 支持,数据装载过程中,数据文件内容会根据目标表的定义字段类型进行数据内容的检查,如果不合法,该行数据会被skip掉,其他数据正常加载。文件头信息也是这样处理的。加载数据日志中会统计成功写入多少行,skip多少行。

?

4、OLH导入日志与异常处理

??? OLH采用java开发,使用java运行环境,导入使用MapReduce过程,运行日志记录了导入数据行,数据量,skip数据行等信息。在使用ETL调用过程中,可以判断java运行返回结果来判断是否运行成功。

6??参考材料

https://HdhCmsTestoracle测试数据/database/technologies/bdc/hadoop-loader.html

https://HdhCmsTestoracle测试数据/technetwork/database/database-technologies/bdc/big-data-connectors/overview/bigdata-connectors-datasheet-1883359.pdf?ssSourceSiteId=otncn

https://docs.oracle测试数据/en/bigdata/big-data-connectors/5.1/user/start.html

编辑:萧宇

查看更多关于使用 Oracle Load For Hadoop(OLH)实现数据湖到Oracle数据库数据集成的详细内容...

  阅读:26次