hadoop - Sqoop:如何从 hive 联合导出表
问题描述
我的用例是我尝试使用 合并配置单元(外部表)中的两个表union all
,但问题是这个联合生成两个目录(SUB_DIR_1 和 SUB_DIR_2)而不是文件(SUCCES_、0000、0001),它使Sqoop 导出使用复杂化(出口目录)。
CREATE EXTERNAL TABLE test(id INT, name STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION /user/foo/test;
INSERT OVERWRITE TABLE test SELECT * FROM (
SELECT * FROM test-1
UNION ALL
SELECT * FROM test-2
);
测试一
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 不是文件
解决方案
作为可能的解决方法,您可以在加载表时触发减速器步骤,方法是添加DISTRIBUTE BY
:
INSERT OVERWRITE TABLE test
SELECT *
FROM
(
SELECT * FROM test-1
UNION ALL
SELECT * FROM test-2
)
DISTRIBUTE BY ID;
这将加载到没有子目录的表位置。
推荐阅读
- swift - 我的相机应用程序的 Swift 代码中有几个错误
- escaping - 防止 Excel 在 JXL API 创建的文件中使 URL 可点击
- java - 如何使用 Springboot 和 Thymeleaf 使用 LocalTime 在两个日期之间进行验证
- typescript - 从没有属性或属性列表的接口创建类型
- sql - 用户同时更新同一行 SQL Server
- python - 仅替换字符串的结尾
- php - 将 php 网页发送到文件夹并将内容显示为 html
- vb.net - 如何将 SQL 数据库中最后一行的选定单元格值放入两个标签中?
- hazelcast - Hazelcast 和对自定义序列化程序的需求;在创建服务器时有效,但在连接到现有服务器时无效
- python - 为Windows制作一个可执行的kivy文件,pyinstaller有问题