sqoop - подключайтесь к оракулу и импортируйте данные в HDFS в IBM BigInsights

Я хочу подключиться к моей базе данных (оракул 10g) и импортировать данные в HDFS, Я использую IBM Big Insight Platform.

но когда я использую приведенную ниже команду:

sqoop import --connect jdbc:oracle:thin://<IP>:1521/DB--username xxx --password xxx--table t /lib/sqoop/sqoopout 

Получено исключение при запуске Sqoop:

java.lang.RuntimeException: Не удалось загрузить класс драйвера БД: oracle.jdbc.OracleDriver

java.lang.RuntimeException: Не удалось загрузить класс драйвера БД: oracle.jdbc.OracleDriver

в org.apache.sqoop.manager.OracleManager.makeConnection(OracleManager.java:286) в org.apache.sqoop.manager.GenericJdbcManager.getConnection(GenericJdbcManager.java:52)

в org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:752) в org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:775) в org.apache.sqoop.manager.SqlManeryfoForCol. (SqlManager.java:270) в org.apache.sqoop.manager.SqlManager.getColumnTypesForRawQuery(SqlManager.java:241) в org.apache.sqoop.manager.SqlManager.getColumnTypes(SqlMap.jager) jj.sqoop.manager.ConnManager.getColumnTypes(ConnManager.java:295) в org.apache.sqoop.orm.ClassWriter.getColumnTypes(ClassWriter.java:1833) в org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1645) в org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:107) в org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:478) в org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605) в org.apache.sqoop.Sqoop.run(Sqoop.java:143) в org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) в org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179) в org.apache.sqoop.Sqoop.runTool(Sqoop. Java:218) в org.apache.sqoop.Sqoop.runTool(Sqoop.java:227) в org.apache.sqoop.Sqoop.main(Sqoop.java:236)

я также копирую ojdbc6_g.jar в sqoop/lib. Пожалуйста, помогите мне решить проблему с импортированием данных в HDFS.

2 ответа

Какую версию BigInsights вы используете? Вы загрузили Oracle odbc jar во все узлы? Sqoop внутренне запускает задание Map, которое будет запускаться из датоданов.

Для sqoop данных из базы данных oracle в первую очередь вам нужно скачать jar ojdbc и поместить его в папку sqoop lib. Ссылка для загрузки JAR OJDBC:

https://mvnrepository.com/artifact/ojdbc/ojdbc/14 https://mvnrepository.com/artifact/com.oracle/ojdbc14/10.2.0.2.0

Кроме того, команда sqoop для импорта данных из ojdbc:

sqoop import --connect jdbc:oracle:thin:@127.0.0.1:1521:XE --username ***** --password ****** --table table_name --columns "COL1, COL2, COL3, COL4, COL5" --target-dir /xyz/zyx -m 1 

Здесь вы можете обратить внимание на инструмент --connect, используемая строка подключения имеет формат:

jdbc:oracle:thin:@ip_address:port_number:SID

Второй допустимый формат:

jdbc:oracle:thin:@ip_address:port_number/service_name

Надеюсь это поможет.

PS - Если вы не можете добавить JJ-файл OJDBC в библиотеку sqoop, вы также можете добавить путь к файлу JAR в переменную $HADOOP_CLASSPATH.

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/root/shared_folder/ojdbc6.jar

PPS - chmod ojdbc jar до 777 перед выполнением.

Другие вопросы по тегам