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;