2016-10-08 4 views
0

Я использую sqoop 1.4.4 для передачи данных от оракула к Hive, используя фразу:sqoop 1.4.4, от оракула к улью некоторого поля в нижнем регистре, ERROR

sqoop job --create vjbkeufwekdfas -- import --split-by "Birthdate" 
--check-column "Birthdate" --hive-database chinacloud --hive-table hive_vjbkeufwekdfas --target-dir /tmp/vjbkeufwekdfas --incremental lastmodified --username GA_TESTER1 --password 123456 --connect jdbc:oracle:thin:@172.16.50.12:1521:ORCL --query "SELECT \"Name\",\"ID\",\"Birthdate\" FROM GA_TESTER1.gmy_table1 where \$CONDITIONS" --m 1 --class-name vjbkeufwekdfas --hive-import 
--fields-terminated-by '^X' --hive-drop-import-delims --null-non-string '' --null-string '' 

это Безразлично» т работы, вызывают проверку использования sqoop стратегии в tool.ImportTool

16/10/08 14:58:03 INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-hdfs/compile/f068e5d884f3929b6415cd8318085fea/vjbkeufwekdfas.jar 
16/10/08 14:58:03 INFO manager.SqlManager: Executing SQL statement: SELECT "NAME","ID","Birthdate" FROM GA_TESTER1.gmy_table1 where (1 = 0) 
16/10/08 14:58:03 ERROR util.SqlTypeMap: It seems like you are looking up a column that does not 
16/10/08 14:58:03 ERROR util.SqlTypeMap: exist in the table. Please ensure that you've specified 
16/10/08 14:58:03 ERROR util.SqlTypeMap: correct column names in Sqoop options. 
16/10/08 14:58:03 ERROR tool.ImportTool: Imported Failed: column not found: "Birthdate" 

Однако, если я не использую двойные кавычки:

sqoop job --create vjbkeufwekdfas -- import --split-by Birthdate 
--check-column Birthdate --hive-database chinacloud --hive-table hive_vjbkeufwekdfas --target-dir /tmp/vjbkeufwekdfas --incremental lastmodified --username GA_TESTER1 --password 123456 --connect jdbc:oracle:thin:@172.16.50.12:1521:ORCL --query "SELECT \"Name\",\"ID\",\"Birthdate\" FROM GA_TESTER1.gmy_table1 where \$CONDITIONS" --m 1 --class-name vjbkeufwekdfas --hive-import 
--fields-terminated-by '^X' --hive-drop-import-delims --null-non-string '' -- 

нуль-строка «»

Оракул ошибка собирается бросить, потому что поле имеет некоторые строчные буквы:

16/10/08 14:37:16 INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-hdfs/compile/1f05a7e94340dd92c9e3b11db1a5db46/vjbkeufwekdfas.jar 
16/10/08 14:37:16 INFO manager.SqlManager: Executing SQL statement: SELECT "NAME","ID","Birthdate" FROM GA_TESTER1.gmy_table1 where (1 = 0) 
16/10/08 14:37:16 INFO tool.ImportTool: Incremental import based on column Birthdate 
16/10/08 14:37:16 INFO tool.ImportTool: Upper bound value: TO_DATE('2016-10-08 14:37:20', 'YYYY-MM-DD HH24:MI:SS') 
16/10/08 14:37:16 INFO mapreduce.ImportJobBase: Beginning query import. 
16/10/08 14:37:16 INFO Configuration.deprecation: mapred.jar is deprecated. Instead, use mapreduce.job.jar 
16/10/08 14:37:17 INFO Configuration.deprecation: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps 
16/10/08 14:37:17 INFO client.RMProxy: Connecting to ResourceManager at master.huacloud.test/172.16.50.21:8032 
16/10/08 14:37:25 INFO mapreduce.JobSubmitter: number of splits:1 
16/10/08 14:37:25 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1474871676561_71208 
16/10/08 14:37:25 INFO impl.YarnClientImpl: Submitted application application_1474871676561_71208 
16/10/08 14:37:26 INFO mapreduce.Job: The url to track the job: http://master.huacloud.test:8088/proxy/application_1474871676561_71208/ 
16/10/08 14:37:26 INFO mapreduce.Job: Running job: job_1474871676561_71208 
16/10/08 14:37:33 INFO mapreduce.Job: Job job_1474871676561_71208 running in uber mode : false 
16/10/08 14:37:33 INFO mapreduce.Job: map 0% reduce 0% 
16/10/08 14:37:38 INFO mapreduce.Job: Task Id : attempt_1474871676561_71208_m_000000_0, Status : FAILED 
Error: java.io.IOException: SQLException in nextKeyValue 
     at org.apache.sqoop.mapreduce.db.DBRecordReader.nextKeyValue(DBRecordReader.java:266) 
     at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyValue(MapTask.java:556) 
     at org.apache.hadoop.mapreduce.task.MapContextImpl.nextKeyValue(MapContextImpl.java:80) 
     at org.apache.hadoop.mapreduce.lib.map.WrappedMapper$Context.nextKeyValue(WrappedMapper.java:91) 
     at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144) 
     at org.apache.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:64) 
     at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787) 
     at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341) 
     at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at javax.security.auth.Subject.doAs(Subject.java:422) 
     at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1707) 
     at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158) 
Caused by: java.sql.SQLSyntaxErrorException: ORA-00904: "BIRTHDATE": invalid identifier 

     at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439) 
     at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395) 
     at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802) 
     at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436) 
     at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186) 
     at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521) 
     at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:205) 
     at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:861) 
     at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1145) 
     at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1267) 
     at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3449) 
     at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3493) 
     at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491) 
     at org.apache.sqoop.mapreduce.db.DBRecordReader.executeQuery(DBRecordReader.java:111) 
     at org.apache.sqoop.mapreduce.db.DBRecordReader.nextKeyValue(DBRecordReader.java:237) 
     ... 12 more 

Я так запутался, любая помощь?

+0

почему вы оборачивать ваши имена столбцов в двойных кавычках? Создаете ли вы таблицу типа 'create table tbl (« Co1 »varchar (20));'? –

ответ

0

Думаю, это может быть проблема чувствительности к регистру. В общем, таблицы и столбцы не чувствительны к регистру, но они будут, если вы используете кавычки.

Попробуйте следующее,

sqoop job --create vjbkeufwekdfas -- import --split-by Birthdate --check-column Birthdate --hive-database chinacloud --hive-table hive_vjbkeufwekdfas --target-dir /tmp/vjbkeufwekdfas --incremental lastmodified --username GA_TESTER1 --password 123456 --connect jdbc:oracle:thin:@172.16.50.12:1521:ORCL --query "SELECT \”NAME\”,\”ID\”,\”BIRTHDATE\” FROM GA_TESTER1.gmy_table1 where \$CONDITIONS" --m 1 --class-name vjbkeufwekdfas --hive-import --fields-terminated-by '^X' --hive-drop-import-delims --null-non-string '' --

Если это все еще не работает, попробуйте 'Eval' первый и убедитесь, что запрос работает нормально

sqoop eval --connect jdbc:oracle:thin:@172.16.50.12:1521:ORCL --query "SELECT \”NAME\”,\”ID\”,\”BIRTHDATE\” FROM GA_TESTER1.gmy_table1 where \$CONDITIONS"

+0

На самом деле запрос не является проблемой, это проблема только в том случае, когда столбец «Дата рождения» используется как -check-column или -split-by – Feiran

+0

. Хорошо, вы пробовали tablename.column, например, --split-by gmy_table1.Birthdate? – Kris

+0

К сожалению, не работает – Feiran

0

В соответствии с пользователем sqoop guide

«Пока общие аргументы Hadoop должны предшествовать любым аргументам импорта, yo u может вводить аргументы импорта в любом порядке по отношению друг к другу ».

Проверьте последовательность своих аргументов.

Пожалуйста, попробуйте ниже ..

sqoop работа --create vjbkeufwekdfas \ - импорт \ --connect: оракула JDBC: тонкий: @ 172.16.50.12: 1521: ORCL \ --username GA_TESTER1 \ --password 123456 \ --query "SELECT \" Name \ ", \" ID \ ", \" Дата рождения \ "FROM GA_TESTER1.gmy_table1, где \ $ УСЛОВИЯ" \ --target-dir/tmp/vjbkeufwekdfas \ --split-by "Дата рождения" \ --check-column "Дата рождения" \ --incremental lastmodified \ --hive-import \ --hive-data база chinacloud \ --hive стола hive_vjbkeufwekdfas \ vjbkeufwekdfas --class-имя \ --fields завершающим-на '^ X' \ --hive-Drop-импорт-delims \ --null-не- строка '' \ --null-строка '' \ --m 1

-1

использование

--append \ 
--last-value "0001-01-01 01:01:01" \