2014-02-28 44 views
1

出口从hdsf和双精度浮点数到MySQL我使用Hadoop版本1.2.1和1.4.4 sqoop问题使用sqoop

我是新来的Hadoop/sqoop时遇到的一个问题。我有数据在hdfs中,我想导出到MySQL但导出保持失败。 我所用的语句是:

sqoop出口--connect的jdbc:mysql的:// {IP地址}/{}数据库用户名--username -P --table {}表名--export-dir的{出口DIR} --input场终止-用 '' --lines终止的,由 '\ n' --verbose

我得到的错误是:

14/02/28 10:12:40 INFO mapred.JobClient: Running job: job_201402040959_0234 
14/02/28 10:12:41 INFO mapred.JobClient: map 0% reduce 0% 
14/02/28 10:12:51 INFO mapred.JobClient: map 50% reduce 0% 
14/02/28 10:22:51 INFO mapred.JobClient: map 0% reduce 0% 
14/02/28 10:22:52 INFO mapred.JobClient: Task Id : attempt_201402040959_0234_m_000000_0, Status : FAILED 
Task attempt_201402040959_0234_m_000000_0 failed to report status for 600 seconds. Killing! 
14/02/28 10:22:52 INFO mapred.JobClient: Task Id : attempt_201402040959_0234_m_000001_0, Status : FAILED 
Task attempt_201402040959_0234_m_000001_0 failed to report status for 600 seconds. Killing! 
14/02/28 10:23:00 INFO mapred.JobClient: map 50% reduce 0% 
14/02/28 10:33:00 INFO mapred.JobClient: map 0% reduce 0% 
14/02/28 10:33:00 INFO mapred.JobClient: Task Id : attempt_201402040959_0234_m_000000_1, Status : FAILED 
Task attempt_201402040959_0234_m_000000_1 failed to report status for 600 seconds. Killing! 
14/02/28 10:33:00 INFO mapred.JobClient: Task Id : attempt_201402040959_0234_m_000001_1, Status : FAILED 
Task attempt_201402040959_0234_m_000001_1 failed to report status for 600 seconds. Killing! 
14/02/28 10:33:09 INFO mapred.JobClient: map 50% reduce 0% 
14/02/28 10:43:09 INFO mapred.JobClient: map 0% reduce 0% 
14/02/28 10:43:09 INFO mapred.JobClient: Task Id : attempt_201402040959_0234_m_000000_2, Status : FAILED 
Task attempt_201402040959_0234_m_000000_2 failed to report status for 600 seconds. Killing! 
14/02/28 10:43:10 INFO mapred.JobClient: Task Id : attempt_201402040959_0234_m_000001_2, Status : FAILED 
Task attempt_201402040959_0234_m_000001_2 failed to report status for 600 seconds. Killing! 
14/02/28 10:43:18 INFO mapred.JobClient: map 50% reduce 0% 
14/02/28 10:53:18 INFO mapred.JobClient: map 25% reduce 0% 
14/02/28 10:53:19 INFO mapred.JobClient: map 0% reduce 0% 
14/02/28 10:53:20 INFO mapred.JobClient: Job complete: job_201402040959_0234 
14/02/28 10:53:20 INFO mapred.JobClient: Counters: 7 
14/02/28 10:53:20 INFO mapred.JobClient: Job Counters 
14/02/28 10:53:20 INFO mapred.JobClient:  SLOTS_MILLIS_MAPS=11987 
14/02/28 10:53:20 INFO mapred.JobClient:  Total time spent by all reduces waiting after reserving slots (ms)=0 
14/02/28 10:53:20 INFO mapred.JobClient:  Total time spent by all maps waiting after reserving slots (ms)=0 
14/02/28 10:53:20 INFO mapred.JobClient:  Launched map tasks=8 
14/02/28 10:53:20 INFO mapred.JobClient:  Data-local map tasks=8 
14/02/28 10:53:20 INFO mapred.JobClient:  SLOTS_MILLIS_REDUCES=0 
14/02/28 10:53:20 INFO mapred.JobClient:  Failed map tasks=1 
14/02/28 10:53:20 INFO mapreduce.ExportJobBase: Transferred 0 bytes in 2,441.242 seconds (0 bytes/sec) 
14/02/28 10:53:20 INFO mapreduce.ExportJobBase: Exported 0 records. 
14/02/28 10:53:20 ERROR tool.ExportTool: Error during export: Export job failed! 

的数据的例子是:

201110,1.8181818181818181 
201111,1.4597701149425288 
201112,1.766990291262136 
20119,1.6153846153846154 
20121,1.5857142857142856 
201210,1.55 
201211,1.5294117647058822 
201212,1.6528925619834711 
20122,1.5789473684210527 
20123,1.4848484848484849 
20124,1.654320987654321 
20125,1.5942028985507246 
20126,1.5333333333333334 
20127,1.4736842105263157 
20128,1.4666666666666666 
20129,1.4794520547945205 
20131,1.6875 
201310,8.233183856502242 
201311,8.524886877828054 
201312,9.333333333333334 
20132,1.7272727272727273 
20133,3.42 
20134,6.380597014925373 
20135,9.504716981132075 
20136,8.538812785388128 
20137,8.609649122807017 
20138,8.777272727272727 
20139,8.506787330316742 
20141,4.741784037558685 

我试着用相同的导出语句导出一个类似的数据集,只用整数而不是双精度,并且成功。我也尝试过使用浮动而不是双打的类似数据集,但那也失败了。请有人给我一个暗示,为什么这不起作用?我对不适合MySQL的数据类型做错了什么?

我还试图运行具有以下附加相同的查询:

-m 1

这给出了相同的错误如上述,除了在地图上步骤完成到100%,而不是仅仅50%。

- 谢谢,请让我知道,如果我应该提供一些额外的信息。

回答

0

请更新说明Hadoop,Sqoop和MySQL版本的问题,以便可以复制问题。

我打算假设您使用的是Hadoop 0.21.0。如果是这种情况,则可能由org.apache.sqoop.mapreduce.ProgressThread类引起,该类使用TaskInputOutputContext,该问题不能正确报告问题[MAPREDUCE-1905]中所述的潜在报告者。

如果您使用的是0.21.0,那么您将需要使用0.21.1或其他Hadoop版本。

否则,我会认为这是ProgressThread中的一些问题或Sqoop如何报告。如果这不起作用,那么YARN或MR1日志中可能还有其他内容。

YARN日志缺省文件夹(在等/ hadoop的/ yarn-env.sh集):

cd $HADOOP_YARN_HOME/logs 

MR1日志缺省文件夹(在等/ hadoop的/ mapred-env.sh集):

cd $HADOOP_MAPRED_HOME/logs 
+0

我查看了$ HADOOP_MAPRED_HOME/logs中的日志很长一段时间,但是我仍然没有看到我的错误来自哪里。有一堆不同的日志文件,不知何故,我没有找到任何解释为什么错误被抛出的原因。我试着比较成功的整数导出到失败的浮动导出,我没有注意到日志中的差异。你有什么建议吗?再次感谢,抱歉,如果我的问题有点模糊。我有点困惑,但我可以尝试澄清,如果你告诉我。 – Murium

0

错误是由于列名中的下划线。显然你不能在列名中加下划线。