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 перед выполнением.