Hadoop Sqoop:如何从配置单元中导出表

Hadoop Sqoop:如何从配置单元中导出表,hadoop,hive,hiveql,sqoop,Hadoop,Hive,Hiveql,Sqoop,我的用例是,我尝试使用union all合并配置单元(外部表)中的两个表,但问题是这个联合生成两个目录(SUB_DIR_1和SUB_DIR_2)而不是文件(SUCCES_,0000,0001),这使使用(export DIR)的Sqoop导出变得复杂 测试-1 id name 1 coco 2 bango 测试-2 id name 3 goo 4 boo 测试 id name 1 coco 2 bango

我的用例是,我尝试使用
union all
合并配置单元(外部表)中的两个表,但问题是这个联合生成两个目录(SUB_DIR_1和SUB_DIR_2)而不是文件(SUCCES_,0000,0001),这使使用(export DIR)的Sqoop导出变得复杂

测试-1

 id    name
 1     coco
 2     bango
测试-2

 id    name
 3     goo
 4     boo
测试

 id     name
 1     coco
 2     bango
 3     goo
 4     boo
Sqoop命令:

 sqoop export –connect jdbc:mysql://db.example.com/foo --table test --export-dir /user/foo/test
执行Sqoop命令时,出现以下错误:

/user/foo/test.SUB_DIR_1不是文件


尽可能的解决方法,您可以在加载表格时通过添加
distributed by
触发reducer步骤:

INSERT OVERWRITE TABLE test 
SELECT * 
FROM 
(
  SELECT * FROM test-1
  UNION ALL
  SELECT * FROM test-2
) 
DISTRIBUTE BY ID;
这将加载到没有子目录的表位置

INSERT OVERWRITE TABLE test 
SELECT * 
FROM 
(
  SELECT * FROM test-1
  UNION ALL
  SELECT * FROM test-2
) 
DISTRIBUTE BY ID;