# dw_base/io — I/O 层 ## 职责 与**外部系统**通信的边界。所有跨进程/跨主机的读写在这里封装,避免业务代码直接依赖 driver / 网络协议。 划分准则(与 `common/` / `utils/` / `ops/` 的区别): | 语义 | 放 | |---|---| | 连接工厂、读写封装(有 I/O) | `io/` | | 纯函数、无状态工具(字符串/日期/哈希) | `utils/` | | 跨模块常量、配置、context、DI container | `common/` | | 数据湖运维操作(compaction / 分区清理 / 小文件合并) | `ops/` | ## 子包 - `db/` —— 数据库连接工厂与读写封装(MySQL / PostgreSQL / Hive / MongoDB 等) - `file/` —— 文件格式读写(csv / txt / json / excel) - `hdfs/` —— HDFS 文件读写(纯 I/O;compaction/合并属于 `ops/`) ## 对外接口概要(规划中) - `db.MySQLHandler(conf) -> Connection-like` - `db.PGHandler(conf)` / `db.HiveHandler(conf)` / `db.MongoHandler(conf)` - `file.read_csv(path, **opts)` / `file.write_csv(df, path, **opts)` - `file.read_excel(path, sheet=None)` / `file.write_excel(df, path)` - `file.read_json(path)` / `file.write_json(obj, path)` - `hdfs.read(path)` / `hdfs.write(path, content)` / `hdfs.ls(path)` ## 依赖 - `configparser`(读 conf/ 配置) - 按子包按需:`pymysql` / `psycopg2` / `openpyxl` / HDFS 客户端等 - `datasource/*.ini` 读取账密(高敏不入库) ## 状态 **骨架(未启动)**。本批仅建目录。后续 B2 阶段搬入: - `dw_base/database/mysql_utils.py` → `io/db/mysql.py` - `dw_base/utils/file_utils.py` → `io/file/` - `dw_base/utils/hdfs_dir_file_coalesce.py` / `hdfs_merge_small_file.py` → **搬 `ops/`(不是 io/hdfs/)** 见 `kb/90-重构路线.md` 聚簇 B。