2016-11-29 3 views
2

オリジナル質問Sqoop 1.99.3は、MySQLへの輸出は、空のテーブルを返します

私はSqoop 1.99.3で働いていると私はDateTimeフィールドが含まれているのMySqlにHDFSからファイルをエクスポートしようとしています。残念ながら、ジョブの実行後、ターゲット表は空であり、エラー・メッセージ/ログはありません。

  • このバージョンのSqoop は、DateTime形式をサポートしていますか?
  • この問題の回避策はありますか?

CSV行の例:

  • 1、 '名前'、2016年4月1日15:10:57,2016-05-31午前5時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ガイド(link)から変更されたパラメータ(ここではデフォルトのものを貼り付けたもの)からコピーされています。

コードはdatetime形式を含まないテーブルでうまく動作します。

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()); 

フォローアップの質問

:Javaでコード

私も(同じパラメータで)sqoopのシェルを介してエクスポートしようとしましたが、ターゲット表には再び、でした、空

さて、私はこの問題を解決することができました。しかし、私は別のテーブル(DateTimeが適切にフォーマットされていても)で同じ問題に直面しています。

CSV行の例:

  • 1、 '名前'、 '名前'、 '2016年5月11日12時08分27秒 '、 '3a99471d-6f42-445f-b651-4a557a0e5b97 '

最後の列はJavaで生成されたUUIDで、char(36)として格納されます。

+0

シェアエラーログも –

+0

sqoopのエクスポートコマンド –

+0

私のコードといくつかの説明を追加しました。投稿に書いたように、sqoopログファイルにはエラー/例外はありません。お手伝いしてくれてありがとう! :) –

答えて

1

datetimeフィールドの問題を解明しました。日時は一重引用符( '')、fで囲む必要があります。 E:

  • 1、 '名前'、 '2016年4月1日午後3時10分57秒'、 '2016年5月31日5時00分59秒'
関連する問題