argodb-mapreduce 是星环科技(Transwarp)开发的 Hadoop MapReduce 输入格式实现,专为与 ArgoDB 数据库集成设计。该项目提供了高效的数据读取能力,使 MapReduce 作业能够直接处理 ArgoDB 中的大规模数据集。
- 实现自定义的
InputFormat完整组件链 - 支持批量数据扫描和分区剪枝优化
- 自动处理数据分布和分片(split)逻辑
- 内置分布式事务管理
- 自动处理事务的创建、提交和终止
- 支持只读共享锁机制
- 与 Hive 类型系统(HCatalog)深度集成
- 兼容标准 Hadoop MapReduce API
- 支持 Hive 默认分区值处理
- Java 8+
- Hadoop 2.x+
- ArgoDB 客户端库
// 在MapReduce作业中设置输入
Job job = Job.getInstance(conf);
ArgodbMapreduceInputFormat.setInput(job, "database_name", "table_name");
// 可选: 设置过滤条件(仅支持单值分区表)
ArgodbMapreduceInputFormat.setInput(job, "database_name", "table_name", "partition_column=value");
// 设置Mapper等常规配置
job.setInputFormatClass(ArgodbMapreduceInputFormat.class);
...graph TD
A[MapReduce Job] --> B[ArgodbMapreduceInputFormat]
B --> C[获取表元数据]
B --> D[创建分布式事务]
B --> E[生成输入分片]
E --> F[ArgodbMapreduceInputSplit]
F --> G[ArgodbMapreduceRecordReader]
G --> H[从ArgoDB读取数据]
所有配置参数通过 Configs 类管理,主要包含:
| 参数 | 说明 | 示例值 |
|---|---|---|
argodb.jdbc.url |
ArgoDB JDBC连接URL | jdbc:argo://host:port/db |
argodb.jdbc.user |
数据库用户名 | admin |
argodb.jdbc.password |
数据库密码 | password |
argodb.table.name |
要读取的表名 | database.table |
argodb.filter |
分区过滤条件 | date=20230101 |
# 使用Maven构建
mvn clean package -DskipTests
# 运行单元测试
mvn test我们欢迎各种形式的贡献!请阅读以下指南:
- 提交Issue报告问题或建议新功能
- Fork仓库并提交Pull Request
- 遵循现有代码风格
- 确保所有测试通过
本项目采用 Apache License 2.0 开源许可证。
如有任何问题,可通过以下方式联系我们:
- GitHub Issues
- 星环科技技术支持邮箱: support@transwarp.io
由星环科技(Transwarp)开源技术团队维护