如何在使用带多个映射器的sqoop导入时创建单个文件

时间:2016-10-25 13:32:40

标签: hive sqoop

我想使用sqoop导入从Mysql导入数据,但我的要求是我想使用4个映射器,但它应该只在hdfs目标目录中创建一个文件有没有办法做到这一点?

3 个答案:

答案 0 :(得分:2)

否。 sqoop中没有选项可以将文件重新分区为1个文件。

我不认为这应该是sqoop的头疼。

您可以使用hadoop的getmerge功能轻松完成。例如:

hadoop fs -getmerge /sqoop/target-dir/ /desired/local/output/file.txt

下面

  • /sqoop/target-dir是您的sqoop命令target-dir(包含所有零件文件的目录)

  • desired/local/output/file.txt是合并的单个文件。

答案 1 :(得分:0)

将此选项添加到sqoop

--num-mappers 1

sqoop日志显示:

Job Counters 
    Launched map tasks=1
    Other local map tasks=1

最后在hdfs上创建了ONE文件。

答案 2 :(得分:0)

您可以使用以下sqoop命令.. !!

@假设数据库名称为prateekDB,表名称为Emp ... !!

sqoop导入--connect“ jdbc:mysql:// localhost:3306 / prateekDB” --username = root \ --password = data --table Emp --target-dir / SqoopImport-由empno分割