|
Выгрузка из Hadoop в Oracle
|
|||
---|---|---|---|
#18+
Добрый вечер, уважаемые! Не являюсь специалистом в хадупе, до этого работал только в Oracle, но вот появилась такая задачка: Есть база данных на Hadoop, есть оракловая БД. Необходимо с некоторой периодичностью выполнять некий запрос с группировкой к таблице в хадупе и результат вставлять в оракловую БД. Предполагается, что данные в хадупе ежедневно обновляются (догружаются новые логи). Предполагаю сделать job в Oozie, который будет дергать скрипт, который будет селектить таблицу и результат инсертить в оракловую таблицу. Собственно, сам запрос в Hive я написал, но как законнектиться к оракловой БД из хадупа (по аналогии с dblink в Oracle)? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2015, 21:22 |
|
Выгрузка из Hadoop в Oracle
|
|||
---|---|---|---|
#18+
sergus166Добрый вечер, уважаемые! Не являюсь специалистом в хадупе, до этого работал только в Oracle, но вот появилась такая задачка: Есть база данных на Hadoop, есть оракловая БД. Необходимо с некоторой периодичностью выполнять некий запрос с группировкой к таблице в хадупе и результат вставлять в оракловую БД. Предполагается, что данные в хадупе ежедневно обновляются (догружаются новые логи). Предполагаю сделать job в Oozie, который будет дергать скрипт, который будет селектить таблицу и результат инсертить в оракловую таблицу. Собственно, сам запрос в Hive я написал, но как законнектиться к оракловой БД из хадупа (по аналогии с dblink в Oracle)?Есть два варианта: 1) sqoop - бесплатно, но медленно 2) Oracle Connectоrs. Например, можно глянуть на Oracle Loader for Hadoop или Oracle SQL Connector for HDFS. Стоят денег, но работают сильно быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2015, 01:24 |
|
Выгрузка из Hadoop в Oracle
|
|||
---|---|---|---|
#18+
sergus166Предполагаю сделать job в Oozie, который будет дергать скрипт, который будет селектить таблицу и результат инсертить в оракловую таблицу. Собственно, сам запрос в Hive я написал, но как законнектиться к оракловой БД из хадупа (по аналогии с dblink в Oracle)? Я писал обычную m/r job'у в хадупе, в которой открывался обычный коннект через банальный jdbc. Проблемы две. 1. Хадуп считает, что любую мапу можно перезапустить после падения. Что не всегда правда для переливки данных. Т.е. надо использовать merge вместо insert. 2. Хадуп рад запустить столько мапперов, сколько у него ядер в кластере. Это может огорчить :D оракловый сервер и его админов. Тут надо что-то делать. Я делал так- взял общий объём данных (я переливал из hdfs) делил его на допустимое количество потоков и задвал ЭТО как mapred.min.split.size и mapred.max.split.size. Результат не 100%, но то, что вместо оговоренных 8 потоков заливка иногда ла в 9 - никого не напрягало. При заливке из hbase вроде как можно просто указать число мапперов (но я hbase старался не трогать- она и так постоянно дохнет). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2015, 09:46 |
|
Выгрузка из Hadoop в Oracle
|
|||
---|---|---|---|
#18+
Alexey Tominsergus166Предполагаю сделать job в Oozie, который будет дергать скрипт, который будет селектить таблицу и результат инсертить в оракловую таблицу. Собственно, сам запрос в Hive я написал, но как законнектиться к оракловой БД из хадупа (по аналогии с dblink в Oracle)? Я писал обычную m/r job'у в хадупе, в которой открывался обычный коннект через банальный jdbc. Проблемы две. 1. Хадуп считает, что любую мапу можно перезапустить после падения. Что не всегда правда для переливки данных. Т.е. надо использовать merge вместо insert. 2. Хадуп рад запустить столько мапперов, сколько у него ядер в кластере. Это может огорчить :D оракловый сервер и его админов. Тут надо что-то делать. Я делал так- взял общий объём данных (я переливал из hdfs) делил его на допустимое количество потоков и задвал ЭТО как mapred.min.split.size и mapred.max.split.size. Результат не 100%, но то, что вместо оговоренных 8 потоков заливка иногда ла в 9 - никого не напрягало. При заливке из hbase вроде как можно просто указать число мапперов (но я hbase старался не трогать- она и так постоянно дохнет). Alexey Tomin, Вы имеете ввиду job в oozie? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2015, 20:41 |
|
Выгрузка из Hadoop в Oracle
|
|||
---|---|---|---|
#18+
Доброго вечера всем! Джоб сделал, падает в процессе выполнения, пытаюсь отладить. Кусок лога ниже: Sqoop command arguments : export --driver oracle.jdbc.driver.OracleDriver --connect jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=XX.YY.AA.BB)(PORT=1521)))(CONNECT_DATA=(SERVER=dedicated)(SERVICE_NAME=ZZZZZ))) --username USER --password PASSWORD --table test_table --export-dir /user/hive/warehouse/test_table/ ================================================================= >>> Invoking Sqoop command line now >>> 4397 [main] WARN org.apache.sqoop.tool.SqoopTool - $SQOOP_CONF_DIR has not been set in the environment. Cannot check for additional configuration. 4445 [main] INFO org.apache.sqoop.Sqoop - Running Sqoop version: 1.4.5-cdh5.3.3 4469 [main] WARN org.apache.sqoop.tool.BaseSqoopTool - Setting your password on the command-line is insecure. Consider using -P instead. 4491 [main] WARN org.apache.sqoop.ConnFactory - $SQOOP_CONF_DIR has not been set in the environment. Cannot check for additional configuration. 4533 [main] WARN org.apache.sqoop.ConnFactory - Parameter --driver is set to an explicit driver however appropriate connection manager is not being set (via --connection-manager). Sqoop is going to fall back to org.apache.sqoop.manager.GenericJdbcManager. Please specify explicitly which connection manager should be used next time. 4550 [main] INFO org.apache.sqoop.manager.SqlManager - Using default fetchSize of 1000 4550 [main] INFO org.apache.sqoop.tool.CodeGenTool - Beginning code generation 5646 [main] INFO org.apache.sqoop.manager.SqlManager - Executing SQL statement: SELECT t.* FROM test_table AS t WHERE 1=0 5691 [main] ERROR org.apache.sqoop.manager.SqlManager - Error executing statement: java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly ended Т.е. до оракловой БД процесс достучался, затем он зачем-то запускает сгенерированный селект SELECT t.* FROM test_table AS t WHERE 1=0 и падает на ORA-00933. При выполнении селекта SELECT t.* FROM test_table AS t WHERE 1=0 непосредственно в оракловой БД та же ошибка. Что с этим можно сделать? Выручайте, братцы.... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2015, 19:35 |
|
Выгрузка из Hadoop в Oracle
|
|||
---|---|---|---|
#18+
sergus166При выполнении селекта SELECT t.* FROM test_table AS t WHERE 1=0 непосредственно в оракловой БД та же ошибка. Что с этим можно сделать? Выручайте, братцы.... А если просто Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2015, 22:08 |
|
Выгрузка из Hadoop в Oracle
|
|||
---|---|---|---|
#18+
Apexsergus166При выполнении селекта SELECT t.* FROM test_table AS t WHERE 1=0 непосредственно в оракловой БД та же ошибка. Что с этим можно сделать? Выручайте, братцы.... А если просто Код: plsql 1.
Такой запрос в Oracle нормально проходит. Проблема в том, что Hadoop при обращении генерит другой запрос (SELECT t.* FROM test_table AS t WHERE 1=0). Порылся в инете. тут говорят, что драйвер нужно поменять. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2015, 09:42 |
|
|
start [/forum/topic.php?fid=48&msg=39111958&tid=1856784]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 169ms |
0 / 0 |