2
原來的問題Sqoop 1.99.3,出口到MySQL返回空表
我與Sqoop 1.99.3工作,我試圖將文件從HDFS導出到MySQL,包含DateTime字段。不幸的是,作業執行後,目標表爲空,並且沒有錯誤消息/日誌。
- 此版本的Sqoop 是否支持DateTime格式?
- 有沒有解決這個問題的方法?
CSV行的一個示例:
- 1, '姓名',2016年4月1日15:10:57,2016-05-31 5時○○分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指南(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年5月11日12時08分27秒 ','3a99471d-6f42-445f-b651-4a557a0e5b97 '
最後一列是Java生成的UUID,存儲爲char(36)。
份額錯誤日誌 –
另外sqoop export命令 –
我已經添加了我的代碼和一些解釋。正如我在帖子中寫的,sqoop日誌文件中沒有錯誤/異常。並感謝您想要幫助! :) –