Импорт Sqoop из SybaseIQ в Hive - java.io.IOException: SQLException в nextKeyValue

Когда я пытаюсь импортировать таблицу в Hive, я получаю странную ошибку.

Запрос:

sqoop import  --connect 'jdbc:sybase:Tds:10.100.*.***:5500/DATABASE=****' --driver 'com.sybase.jdbc3.jdbc.SybDriver' --username "****" --password "***" --table dw.dm_court_courttype --direct -m 1 --hive-import --create-hive-table --hive-table DM_court_courtcype --target-dir "/user/hive/warehouse/DM_Court_CourtType" --verbose

Ошибка:

java.io.IOException: SQLException в nextKeyValue в org.apache.sqoop.mapreduce.db.DBRecordReader.nextKeyValue (DBRecordReader.java:277) в org.apache.hadoop.mapred.MapTask $ NewTrackingRecordKeyValue ( ) в org.apache.hadoop.mapreduce.task.MapContextImpl.nextKeyValue (MapContextImpl.java:80) в org.apache.hadoop.mapreduce.lib.map.WrappedMapper $ Context.nextKeyValue (WrappedMapper.java .:91) в org.apache.hadoop.mapreduce.lib.map.WrappedMapper $ Context.nextKeyValue (WrappedMapper.java .:91) apache.hadoop.mapreduce.Mapper.run (Mapper.java:145) в org.apache.sqoop.mapreduce.AutoProgressMapper.run (AutoProgressMapper.java:64) в org.apache.hadoop.mapred.MapTask.runNewMapper (MapTask.runNewMapper. java: 796) в org.apache.hadoop.mapred.MapTask.run (MapTask.java:346) в org.apache.hadoop.mapred.YarnChild $ 2.run (YarnChild.java:163) в java.security.AccessController. doPrivileged (собственный метод) в javax.security.auth.Subject.doAs (Subject.java:415) в org.apache.hadoop.security.UserGroupInformation.doAs (UserGroupInformation.java:1595) в org.apache.hadoop.mapred.YarnChild.main (YarnChild .java: 158) Вызвано: com.sybase.jdbc3.jdbc.SybSQLException: Ошибка SQL Anywhere -131: Синтаксическая ошибка рядом с '.' в строке 1 в com.sybase.jdbc3.tds.Tds.a (Неизвестный источник) в com.sybase.jdbc3.tds.Tds.nextResult (Неизвестный источник) в com.sybase.jdbc3.tds.Tds.getResultSetResult (Неизвестный источник ) по адресу com.sybase.jdbc3.tds.TdsCursor.open (Неизвестный источник) по адресу com.sybase.jdbc3.jdbc.SybStatement.executeQuery (Неизвестный источник) по адресу com.sybase.jdbc3.jdbc.SybPreparedStatement.execute SourceQuery (Неизвестный источник) org.apache.sqoop.mapreduce.db.DBRecordReader.executeQuery (DBRecordReader.java:111) at org.apache.sqoop.mapreduce.db.DBRecordReader.nextKeyValue (DBRecordReader.java:235) ... еще 12


person karthee    schedule 08.03.2017    source источник


Ответы (1)


Не используйте имя базы данных с именем таблицы.

Используйте --table dm_court_courttype вместо --table dw.dm_court_courttype

Попробуй это:

sqoop import --connect 'jdbc:sybase:Tds:10.100..:5500/DATABASE=****' --driver 'com.sybase.jdbc3.jdbc.SybDriver' --username "****" --password "*" --table dm_court_courttype --direct -m 1 --hive-import --create-hive-table --hive-table DM_court_courtcype --target-dir "/user/hive/warehouse/DM_Court_CourtType" --verbose
person Dev    schedule 08.03.2017
comment
Разве некоторые из этих трех команд не являются избыточными: --hive-import --create-hive-table --hive-table На самом деле я собирался задать вопрос по этой теме - person Ignacio Alorre; 08.03.2017
comment
@IgnacioAlorre Я просто изменяю команду OP. Все там не лишнее. Используя --hive-table, вы можете задать имя таблицы улья. да. `--hive-import` автоматически создаст таблицу кустов. Таким образом, тег --create-hive-table здесь можно пропустить. - person Dev; 08.03.2017
comment
@dev на самом деле получаю ту же ошибку! если я удалю имя схемы Таблица не найдена исключение, выбрасываемое. это исключение выдает только тогда, когда я делаю с -direct import. если я использую 'select * from table', запрос в порядке! что я здесь пропустил? - person karthee; 13.03.2017
comment
@karthee Работает ли тот же запрос, если вы удалите -direct (not select * from table)? - person Dev; 15.03.2017
comment
@karthee Я не очень хорошо знаком с sybase. Отличаются ли в нем база данных и схема? Некоторые СУБД имеют только базы данных или схемы, тесно связанные с именами пользователей. - person Dev; 15.03.2017
comment
@dev Это обряд ... если я удалю --direct, запрос будет в порядке. все в порядке с условиями select * from \ $ !!! я тоже новичок в этой Sybase! и постараюсь разобраться в этом. В любом случае спасибо :) - person karthee; 16.03.2017
comment
@karthee. Хорошо. вы можете изучить параметр -- --schema custom_schema, если хотите указать собственное имя схемы. Я не пробовал с Sybase. Работает с sql server, postgres. - person Dev; 16.03.2017