2016-11-29 8 views
2

Оригинальный вопросSqoop 1.99.3, экспорт в MySQL возвращает пустые таблицы

Я работаю с Sqoop 1.99.3, и я пытаюсь экспортировать файл из HDFS в MySql, который содержит поле DateTime. К сожалению, после выполнения задания целевая таблица пуста, и нет сообщений об ошибках/журналов.

  • Поддерживает ли эта версия Sqoop формат DateTime?
  • Есть ли обходной путь для решения этой проблемы?

Пример строки CSV:

  • 1, 'имя', 2016-04-01 15: 10: 57,2016-05-31 05:00:59

Создать заявление для таблицы MySQL:

CREATE TABLE `unit` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(50) NOT NULL, 
    `u_save_date` datetime DEFAULT NULL, 
    `c_save_time` datetime NOT NULL, 
    PRIMARY KEY (`id`)); 

с меня попросили, вот мой код. Ничего революционного, не скопировано из Sqoop 5-минутного демо-клипа Api guide (link) с измененными параметрами (здесь я вставил их по умолчанию).

Код отлично подходит для таблиц, которые не содержат формат даты и времени. Я также пытался экспортировать через sqoop оболочки (с теми же параметрами), но целевые таблицы были, опять же, пустой

кодекса в Java:

String url = "http://localhost:12000/sqoop/"; 
SqoopClient client = new SqoopClient(url); 
MJob newjob = client.newJob(1, org.apache.sqoop.model.MJob.Type.EXPORT); 
MJobForms connectorForm = newjob.getConnectorPart(); 
MJobForms frameworkForm = newjob.getFrameworkPart(); 

newjob.setName("ExportJob"); 
connectorForm.getStringInput("table.schemaName").setValue(""); 
connectorForm.getStringInput("table.tableName").setValue("table"); 
connectorForm.getStringInput("table.columns").setValue("id,name"); 

frameworkForm.getStringInput("input.inputDirectory").setValue("/input"); 

frameworkForm.getIntegerInput("throttling.extractors").setValue(1); 
frameworkForm.getIntegerInput("throttling.loaders").setValue(1); 

Status status = client.createJob(newjob); 
if(status.canProceed()) { 
    System.out.println("New Job ID: "+ newjob.getPersistenceId()); 
} else { 
    System.out.println("Check for status and forms error "); 
} 

printMessage(newjob.getConnectorPart().getForms()); 
printMessage(newjob.getFrameworkPart().getForms()); 

последующий вопрос

Хорошо, мне удалось решить эту проблему. Однако теперь я столкнулся с одной и той же проблемой с другой таблицей (даже при правильном форматировании DateTime).

Пример строки CSV:

  • 1, 'имя', 'имя', '2016-05-11 12:08:27 ', '3a99471d-6f42-445f-b651-4a557a0e5b97 '

Последний столбец сгенерированный Java UUID и хранится как char (36).

+0

журналы ошибок доля –

+0

также Команда экспорта sqoop –

+0

Я добавил свой код и некоторое объяснение. Как я писал в сообщении, в файле журнала sqoop нет ошибки/исключения. И спасибо вам за помощь! :) –

ответ

1

Я выяснил проблему с полями datetime. Datetime должно быть заключено в одиночные кавычки (''), f. е:

  • 1, 'имя', '2016-04-01 15:10:57', '2016-05-31 5:00:59'

 Смежные вопросы

  • Нет связанных вопросов^_^