Oracle to Hive – Part II

Para replicar (CDC) dados para o Hive via Goldengate, neste exemplo irei utilizar os processos de extract e pump.

Como exemplo vou replicar (CDC) de uma tabela XPTO. Estou a mencionar o CDC (Change Data Capture), pois para o carregamento inicial, irei exemplificar com outra ferramenta que é o Sqoop.

Para a configuração do pump, será necessário configurar um adaptador Java, para realizar a integração com o Hive (Hive handler property file + Hive Handler Code).

Tendo como princípio, que temos a base de dados e o Goldengate devidamente instalados e prontos, podemos tratar da configuração.

1) Primeiramente, vamos ao nosso processo de extract (que vou chamar de ehive):

a) Adicionar Supplemental Logging:

ggsci>dblogin userid gguser, password xyz

ggsci>add trandata foo.cust_info, cols ( name, gender, city, phone, id, zip, cust_date)

Configure Oracle GoldenGate capture process.
Sample capture parameter file listed below

b) Parâmetros do processo ehive:

EXTRACT ehive
USERID gguser, PASSWORD xyz
EXTTRAIL ./dirdat/tf
GETUPDATEBEFORES
NOCOMPRESSUPDATES
TABLE foo.cust_info;

c) Adicionar o processo ehive:

ggsci>add extract ehive, tranlog, begin now
ggsci>add exttrail ./dirdat/tf, extract ehive, megabytes 50
ggsci>start extract ehive
ggsci>info ehive

2) Adicionar o processo de pump (que irei chamar de phive):

a) Parâmetros do processo phive:

extract phive
sourcedefs ./dirdef/efile.def
CUSEREXIT ./libggjava_ue.so CUSEREXIT PASSTHRU INCLUDEUPDATEBEFORES
TABLE foo.cust_info;

PS: É necessário gerar o mapa de estrutura de dados da tabela para permitir o funcionamento correto (SOURCEDEFS)

ggsci > Edit params defgen
defsfile ./dirdef/efile.def
userid ogg password ogg
TABLE foo.cust_info;

ggsci > sh ./defgen paramfile ./dirprm/defgen.prm

b) Adicionar o processo de pump phive:

ggsci> add extract phive, exttrailsource ./dirdat/tf

c) Configurar Hive handler property file:

Para isso, temos que criar o ficheiro/arquivo phive.properties em ./dirprm/:

vi ./dirprm/phive.properties

Conteúdo do phive.properties:

#Adapter Logging parameters.
gg.log=log4j
gg.log.level=info

#Adapter Check pointing parameters
goldengate.userexit.chkptprefix=HIVECHKP_
goldengate.userexit.nochkpt=true
# Java User Exit Property
goldengate.userexit.writers=jvm
jvm.bootoptions= -Xms64m -Xmx512M –Djava.class.path=ggjava/ggjava.jar:dirprm:dirprm/myhivehandler.jar:/home/hadoop/hadoop-0.20.203.0/hadoop-core-0.20.203.0.jar:/home/hadoop/hadoop-0.20.203.0/lib/commons-configuration-1.6.jar:/home/hadoop/hadoop-0.20.203.0/lib/commons-logging-api-1.0.4.jar:/home/hadoop/hadoop-0.20.203.0/lib/commons-lang-2.4.jar:/home/hadoop/hadoop-0.20.203.0:/home/hadoop/hadoop-0.20.203.0/conf:
#Properties for reporting statistics
# Minimum number of {records, seconds} before generating a report
jvm.stats.time=3600
jvm.stats.numrecs=5000
jvm.stats.display=TRUE
jvm.stats.full=TRUE

#Hive Handler.
gg.handlerlist=hivehandler
gg.handler.hivehandler.type=com.mycompany.bigdata.SampleHandlerHive
gg.handler.hivehandler.HDFSFileName=/user/hive/warehouse/xpto
gg.handler.hivehandler.RegularFileName=cinfo_hive.txt
gg.handler.hivehandler.RecordDelimiter=;
gg.handler.hivehandler.mode=tx

 

d) Agora é necessário compilar o adaptador Java (que pode ser customizado, mas aqui está o exemplo que utilizei):

Compilar o adaptador:

export CLASSPATH=.:../ggjava/ggjava.jar:dirprm:dirprm/myhdfshandler.jar:/opt/hadoop/hive/hcatalog/share/webhcat/svr/lib/hadoop-core-1.0.3.jar:/opt/hadoop/hive/lib/commons-configuration-1.6.jar:/opt/hadoop/hive/lib/commons-logging-api-1.0.4.jar:/opt/hadoop/hive/lib/commons-lang-2.4.jar:/opt/hadoop/hive:/opt/hadoop/hive/conf:/opt/hadoop:/opt/hadoop/conf

javac -d . SampleHiveHandler.java

Gerar o JAR file:

jar cvf myhivehandler.jar com

 

e) Iniciar o processo de pump phive:

ggsci>start phive
ggsci>info phive

3) Hora do teste 🙂

a) Inserts:

PastedGraphic-2

b) Status dos processos Goldengate:

PastedGraphic-1

c) Log do processo pump:

PastedGraphic-3

d) Dados no Hive

PastedGraphic-4

 

Para já, é isso, o proxímo post deste tema, será o carregamento inicial com o Sqoop.

4 comments

  1. Yes – I resolved that issue by ruuning gg as root (hadoop installation user)..
    Now I’m hitting another exception

    I have installed cloudera CHD5 and using gg adapter 11.2.1.0 on the target

    Caused by: java.io.IOException: Not supported
    at org.apache.hadoop.fs.ChecksumFileSystem.append

    1. Hi, in my scenario I’m using hadoop and hive withou CDH. The CDH (this version) use HiveServer2, so i think that better use Apache Flume.

      In this note have a PDF file with implementation example:

      Oracle GoldenGate Application Adapter v11.2.1 Example for Flume (Doc ID 1926867.1) To BottomTo Bottom

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s