Hive学习记录第一章

发布时间:2026/5/24 2:57:28

Hive学习记录第一章 本章目标理解Apache Hive的基本概念掌握Hive的核心架构组件了解Hive在大数据生态系统中的定位理解Hive的工作原理和执行流程掌握Hive的优势和局限性1.1 什么是Apache Hive1.1.1 Hive简介Apache Hive是一个建立在Hadoop之上的数据仓库软件它提供了一种类SQL的查询语言HiveQL使得熟悉SQL的用户能够轻松地查询和分析存储在Hadoop分布式文件系统HDFS中的大规模数据集。核心特点SQL-like语法提供HiveQL查询语言语法类似于SQL大数据处理能够处理PB级别的数据分布式计算基于Hadoop MapReduce或其他执行引擎数据仓库功能支持数据汇总、查询和分析可扩展性支持水平扩展处理能力随集群规模增长1.1.2Hive的设计理念Schema on Read读时模式传统数据库: Schema on Write 数据写入时 - 严格验证模式 - 存储 Hive: Schema on Read 数据存储 - 读取时应用模式 - 查询处理优势数据加载速度快支持多种数据格式灵活的模式演化适合大数据场景1.2 Hive架构概览1.2.1 整体架构图┌─────────────────────────────────────────────────────────────┐ │ Hive Client │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ Hive CLI │ │ Hive Web │ │ JDBC/ODBC │ │ │ │ │ │ Interface │ │ Drivers │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Hive Services │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ Driver │ │ Metastore │ │ HiveServer2 │ │ │ │ │ │ Service │ │ │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Execution Engines │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ MapReduce │ │ Tez │ │ Spark │ │ │ │ │ │ │ │ │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Storage Layer │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ HDFS │ │ Amazon │ │ Other Storage │ │ │ │ │ │ S3 │ │ Systems │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ └─────────────────────────────────────────────────────────────┘1.2.2 核心组件详解1. Hive Client客户端Hive CLI命令行界面# 启动Hive CLI $ hive # 执行HiveQL查询 hive SHOW DATABASES; hive USE default; hive SHOW TABLES;Hive Web InterfaceWeb界面基于浏览器的图形界面支持查询编辑和结果查看提供作业监控功能JDBC/ODBC驱动// Java JDBC连接示例 String url jdbc:hive2://localhost:10000/default; Connection conn DriverManager.getConnection(url, username, password); Statement stmt conn.createStatement(); ResultSet rs stmt.executeQuery(SELECT * FROM users LIMIT 10);2. Hive Services核心服务Driver驱动器接收HiveQL查询编译和优化查询生成执行计划协调查询执行Metastore元数据存储元数据包含 ├── 数据库信息 ├── 表结构定义 ├── 分区信息 ├── 存储位置 ├── 序列化信息 └── 统计信息HiveServer2服务器提供Thrift接口支持并发客户端连接处理认证和授权管理会话状态1.3 Hive工作原理1.3.1 查询执行流程1. 用户提交HiveQL查询 ↓ 2. Driver接收查询请求 ↓ 3. 编译器解析HiveQL ↓ 4. 查询优化器优化执行计划 ↓ 5. 生成物理执行计划 ↓ 6. 提交作业到执行引擎 ↓ 7. 执行引擎处理数据 ↓ 8. 返回查询结果1.3.2 详细执行步骤步骤1语法解析-- 原始HiveQL SELECT name, age FROM users WHERE age 25 ORDER BY age;解析结果 ├── SELECT子句: [name, age] ├── FROM子句: users表 ├── WHERE子句: age 25 └── ORDER BY子句: age ASC步骤2语义分析验证内容 ├── 表是否存在 ├── 列是否存在 ├── 数据类型是否匹配 ├── 权限是否足够 └── 语法是否正确步骤3逻辑计划生成逻辑操作树 Sort(age) ↓ Filter(age 25) ↓ Project(name, age) ↓ TableScan(users)步骤4物理计划生成MapReduce作业 Map阶段 - 读取users表数据 - 应用过滤条件(age 25) - 输出(name, age)对 Reduce阶段 - 按age排序 - 输出最终结果1.3.3 元数据管理Metastore架构┌─────────────────┐ ┌─────────────────┐ │ Hive Client │ │ Hive Client │ └─────────────────┘ └─────────────────┘ │ │ └───────────┬───────────┘ │ ▼ ┌─────────────────┐ │ Metastore │ │ Service │ └─────────────────┘ │ ▼ ┌─────────────────┐ │ Database │ │ (MySQL/Derby) │ └─────────────────┘元数据表结构-- 数据库表 CREATE TABLE DBS ( DB_ID BIGINT PRIMARY KEY, DESC VARCHAR(4000), DB_LOCATION_URI VARCHAR(4000), NAME VARCHAR(128), OWNER_NAME VARCHAR(128), OWNER_TYPE VARCHAR(10) ); -- 表信息表 CREATE TABLE TBLS ( TBL_ID BIGINT PRIMARY KEY, CREATE_TIME INT, DB_ID BIGINT, LAST_ACCESS_TIME INT, OWNER VARCHAR(767), RETENTION INT, SD_ID BIGINT, TBL_NAME VARCHAR(256), TBL_TYPE VARCHAR(128) ); -- 列信息表 CREATE TABLE COLUMNS_V2 ( CD_ID BIGINT, COMMENT VARCHAR(256), COLUMN_NAME VARCHAR(767), TYPE_NAME VARCHAR(4000), INTEGER_IDX INT );1.4 Hive数据模型1.4.1 数据组织层次Hive数据组织结构 Database数据库 ├── Table表 │ ├── Partition分区 │ │ └── Bucket分桶 │ └── Column列 └── View视图1.4.2 表类型1. 内部表Managed Table-- 创建内部表 CREATE TABLE employees ( id INT, name STRING, department STRING, salary DOUBLE ) STORED AS TEXTFILE;特点Hive完全管理表的生命周期删除表时数据和元数据都被删除数据存储在Hive仓库目录中2. 外部表External Table-- 创建外部表 CREATE EXTERNAL TABLE external_employees ( id INT, name STRING, department STRING, salary DOUBLE ) STORED AS TEXTFILE LOCATION /user/data/employees;特点Hive只管理元数据删除表时只删除元数据数据保留数据可以存储在任意HDFS位置3. 分区表Partitioned Table-- 创建分区表 CREATE TABLE sales ( product_id INT, product_name STRING, price DOUBLE ) PARTITIONED BY (year INT, month INT) STORED AS TEXTFILE;分区结构/warehouse/sales/ ├── year2023/month01/ ├── year2023/month02/ ├── year2023/month03/ └── year2024/month01/4. 分桶表Bucketed Table-- 创建分桶表 CREATE TABLE user_behavior ( user_id INT, action STRING, timestamp BIGINT ) CLUSTERED BY (user_id) INTO 32 BUCKETS STORED AS TEXTFILE;分桶优势提高查询性能支持高效的采样优化JOIN操作1.4.3 数据格式文本格式-- TextFile格式 CREATE TABLE text_table ( col1 STRING, col2 INT ) STORED AS TEXTFILE;列式存储格式-- Parquet格式 CREATE TABLE parquet_table ( col1 STRING, col2 INT ) STORED AS PARQUET; -- ORC格式 CREATE TABLE orc_table ( col1 STRING, col2 INT ) STORED AS ORC;压缩格式-- 设置压缩 SET hive.exec.compress.outputtrue; SET mapred.output.compression.codecorg.apache.hadoop.io.compress.GzipCodec; -- 创建压缩表 CREATE TABLE compressed_table ( col1 STRING, col2 INT ) STORED AS TEXTFILE TBLPROPERTIES (compressGZIP);1.5 Hive在大数据生态中的定位1.5.1 生态系统集成大数据生态系统 ┌─────────────────────────────────────────────────────────┐ │ 应用层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │ │ │ BI工具 │ │ 数据科学 │ │ 报表系统 │ │ │ └─────────────┘ └─────────────┘ └─────────────────┘ │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ 分析层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │ │ │ Hive │ │ Spark │ │ Impala │ │ │ └─────────────┘ └─────────────┘ └─────────────────┘ │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ 存储层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │ │ │ HDFS │ │ HBase │ │ Kafka │ │ │ └─────────────┘ └─────────────┘ └─────────────────┘ │ └─────────────────────────────────────────────────────────┘1.5.2 适用场景最适合的场景1. 数据仓库建设 - 大规模数据存储 - 复杂的ETL处理 - 历史数据分析 2. 批处理分析 - 离线数据处理 - 定期报表生成 - 数据挖掘任务 3. 数据探索 - 临时查询分析 - 数据质量检查 - 业务指标计算不适合的场景1. 实时处理 - 毫秒级响应需求 - 流式数据处理 - 在线事务处理 2. 小数据集 - 数据量小于GB级别 - 简单的查询操作 - 频繁的更新操作 3. 高并发查询 - 大量并发用户 - 交互式分析 - 在线服务查询1.6 Hive的优势与局限性1.6.1 主要优势1. 易于使用-- 熟悉的SQL语法 SELECT department, AVG(salary) as avg_salary FROM employees WHERE hire_date 2020-01-01 GROUP BY department ORDER BY avg_salary DESC;2. 可扩展性-- 熟悉的SQL语法 SELECT department, AVG(salary) as avg_salary FROM employees WHERE hire_date 2020-01-01 GROUP BY department ORDER BY avg_salary DESC;3. 成本效益成本优势 ├── 开源免费 ├── 商用硬件 ├── 高存储效率 └── 低运维成本第01章 - Hive基础概念与架构本章目标通过本章学习您将能够理解Apache Hive的基本概念和设计理念掌握Hive的核心架构组件了解Hive在大数据生态系统中的定位理解Hive的工作原理和执行流程掌握Hive的优势和局限性1.1 什么是Apache Hive1.1.1 Hive简介Apache Hive是一个建立在Hadoop之上的数据仓库软件它提供了一种类SQL的查询语言HiveQL使得熟悉SQL的用户能够轻松地查询和分析存储在Hadoop分布式文件系统HDFS中的大规模数据集。核心特点SQL-like语法提供HiveQL查询语言语法类似于SQL大数据处理能够处理PB级别的数据分布式计算基于Hadoop MapReduce或其他执行引擎数据仓库功能支持数据汇总、查询和分析可扩展性支持水平扩展处理能力随集群规模增长1.1.2 Hive的发展历史2007年: Facebook开发Hive项目 2008年: Hive开源并贡献给Apache软件基金会 2010年: Hive成为Apache顶级项目 2011年: 发布Hive 0.7引入HCatalog 2013年: 发布Hive 0.12支持Tez执行引擎 2014年: 发布Hive 0.14引入ACID事务支持 2016年: 发布Hive 2.0重大架构改进 2018年: 发布Hive 3.0引入LLAP和Druid集成 2020年: 持续优化支持更多执行引擎1.1.3 Hive的设计理念Schema on Read读时模式传统数据库: Schema on Write 数据写入时 - 严格验证模式 - 存储 Hive: Schema on Read 数据存储 - 读取时应用模式 - 查询处理优势数据加载速度快支持多种数据格式灵活的模式演化适合大数据场景1.2 Hive架构概览1.2.1 整体架构图┌─────────────────────────────────────────────────────────────┐ │ Hive Client │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ Hive CLI │ │ Hive Web │ │ JDBC/ODBC │ │ │ │ │ │ Interface │ │ Drivers │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Hive Services │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ Driver │ │ Metastore │ │ HiveServer2 │ │ │ │ │ │ Service │ │ │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Execution Engines │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ MapReduce │ │ Tez │ │ Spark │ │ │ │ │ │ │ │ │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Storage Layer │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ HDFS │ │ Amazon │ │ Other Storage │ │ │ │ │ │ S3 │ │ Systems │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ └─────────────────────────────────────────────────────────────┘1.2.2 核心组件详解1. Hive Client客户端Hive CLI命令行界面# 启动Hive CLI$ hive# 执行HiveQL查询hive SHOW DATABASES;hive USE default;hive SHOW TABLES;Hive Web InterfaceWeb界面基于浏览器的图形界面支持查询编辑和结果查看提供作业监控功能JDBC/ODBC驱动// Java JDBC连接示例 String url jdbc:hive2://localhost:10000/default; Connection conn DriverManager.getConnection(url, username, password); Statement stmt conn.createStatement(); ResultSet rs stmt.executeQuery(SELECT * FROM users LIMIT 10);2. Hive Services核心服务Driver驱动器接收HiveQL查询编译和优化查询生成执行计划协调查询执行Metastore元数据存储元数据包含 ├── 数据库信息 ├── 表结构定义 ├── 分区信息 ├── 存储位置 ├── 序列化信息 └── 统计信息HiveServer2服务器提供Thrift接口支持并发客户端连接处理认证和授权管理会话状态3. Execution Engines执行引擎MapReduce优点 - 成熟稳定 - 容错性强 - 资源管理完善 缺点 - 启动开销大 - 中间结果写磁盘 - 延迟较高Tez优点 - DAG执行模型 - 内存中处理 - 动态优化 - 更低延迟 适用场景 - 交互式查询 - 复杂的多阶段作业Spark优点 - 内存计算 - 统一的计算引擎 - 丰富的API - 机器学习支持 适用场景 - 迭代计算 - 机器学习 - 流处理1.3 Hive工作原理1.3.1 查询执行流程1. 用户提交HiveQL查询 ↓ 2. Driver接收查询请求 ↓ 3. 编译器解析HiveQL ↓ 4. 查询优化器优化执行计划 ↓ 5. 生成物理执行计划 ↓ 6. 提交作业到执行引擎 ↓ 7. 执行引擎处理数据 ↓ 8. 返回查询结果1.3.2 详细执行步骤步骤1语法解析-- 原始HiveQL SELECT name, age FROM users WHERE age 25 ORDER BY age;解析结果 ├── SELECT子句: [name, age] ├── FROM子句: users表 ├── WHERE子句: age 25 └── ORDER BY子句: age ASC步骤2语义分析验证内容 ├── 表是否存在 ├── 列是否存在 ├── 数据类型是否匹配 ├── 权限是否足够 └── 语法是否正确步骤3逻辑计划生成逻辑操作树 Sort(age) ↓ Filter(age 25) ↓ Project(name, age) ↓ TableScan(users)步骤4物理计划生成MapReduce作业 Map阶段 - 读取users表数据 - 应用过滤条件(age 25) - 输出(name, age)对 Reduce阶段 - 按age排序 - 输出最终结果1.3.3 元数据管理Metastore架构┌─────────────────┐ ┌─────────────────┐ │ Hive Client │ │ Hive Client │ └─────────────────┘ └─────────────────┘ │ │ └───────────┬───────────┘ │ ▼ ┌─────────────────┐ │ Metastore │ │ Service │ └─────────────────┘ │ ▼ ┌─────────────────┐ │ Database │ │ (MySQL/Derby) │ └─────────────────┘元数据表结构-- 数据库表 CREATE TABLE DBS ( DB_ID BIGINT PRIMARY KEY, DESC VARCHAR(4000), DB_LOCATION_URI VARCHAR(4000), NAME VARCHAR(128), OWNER_NAME VARCHAR(128), OWNER_TYPE VARCHAR(10) ); -- 表信息表 CREATE TABLE TBLS ( TBL_ID BIGINT PRIMARY KEY, CREATE_TIME INT, DB_ID BIGINT, LAST_ACCESS_TIME INT, OWNER VARCHAR(767), RETENTION INT, SD_ID BIGINT, TBL_NAME VARCHAR(256), TBL_TYPE VARCHAR(128) ); -- 列信息表 CREATE TABLE COLUMNS_V2 ( CD_ID BIGINT, COMMENT VARCHAR(256), COLUMN_NAME VARCHAR(767), TYPE_NAME VARCHAR(4000), INTEGER_IDX INT );1.4 Hive数据模型1.4.1 数据组织层次Hive数据组织结构 Database数据库 ├── Table表 │ ├── Partition分区 │ │ └── Bucket分桶 │ └── Column列 └── View视图1.4.2 表类型1. 内部表Managed Table-- 创建内部表 CREATE TABLE employees ( id INT, name STRING, department STRING, salary DOUBLE ) STORED AS TEXTFILE;特点Hive完全管理表的生命周期删除表时数据和元数据都被删除数据存储在Hive仓库目录中2. 外部表External Table-- 创建外部表 CREATE EXTERNAL TABLE external_employees ( id INT, name STRING, department STRING, salary DOUBLE ) STORED AS TEXTFILE LOCATION /user/data/employees;特点Hive只管理元数据删除表时只删除元数据数据保留数据可以存储在任意HDFS位置3. 分区表Partitioned Table-- 创建分区表 CREATE TABLE sales ( product_id INT, product_name STRING, price DOUBLE ) PARTITIONED BY (year INT, month INT) STORED AS TEXTFILE;分区结构/warehouse/sales/ ├── year2023/month01/ ├── year2023/month02/ ├── year2023/month03/ └── year2024/month01/4. 分桶表Bucketed Table-- 创建分桶表 CREATE TABLE user_behavior ( user_id INT, action STRING, timestamp BIGINT ) CLUSTERED BY (user_id) INTO 32 BUCKETS STORED AS TEXTFILE;分桶优势提高查询性能支持高效的采样优化JOIN操作1.4.3 数据格式文本格式-- TextFile格式 CREATE TABLE text_table ( col1 STRING, col2 INT ) STORED AS TEXTFILE;列式存储格式-- Parquet格式 CREATE TABLE parquet_table ( col1 STRING, col2 INT ) STORED AS PARQUET; -- ORC格式 CREATE TABLE orc_table ( col1 STRING, col2 INT ) STORED AS ORC;压缩格式-- 设置压缩 SET hive.exec.compress.outputtrue; SET mapred.output.compression.codecorg.apache.hadoop.io.compress.GzipCodec; -- 创建压缩表 CREATE TABLE compressed_table ( col1 STRING, col2 INT ) STORED AS TEXTFILE TBLPROPERTIES (compressGZIP);1.5 Hive在大数据生态中的定位1.5.1 生态系统集成大数据生态系统 ┌─────────────────────────────────────────────────────────┐ │ 应用层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │ │ │ BI工具 │ │ 数据科学 │ │ 报表系统 │ │ │ └─────────────┘ └─────────────┘ └─────────────────┘ │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ 分析层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │ │ │ Hive │ │ Spark │ │ Impala │ │ │ └─────────────┘ └─────────────┘ └─────────────────┘ │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ 存储层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │ │ │ HDFS │ │ HBase │ │ Kafka │ │ │ └─────────────┘ └─────────────┘ └─────────────────┘ │ └─────────────────────────────────────────────────────────┘1.5.2 与其他工具的比较Hive vs Spark SQLHive: ✓ 成熟稳定 ✓ 丰富的功能 ✓ 良好的生态支持 ✗ 延迟较高 ✗ 不支持实时处理 Spark SQL: ✓ 低延迟 ✓ 内存计算 ✓ 统一的计算引擎 ✗ 相对较新 ✗ 内存需求大Hive vs ImpalaHive: ✓ 批处理优化 ✓ 复杂查询支持 ✓ 多种存储格式 ✗ 查询延迟高 Impala: ✓ 低延迟查询 ✓ 实时分析 ✓ MPP架构 ✗ 内存限制 ✗ 容错性较弱1.5.3 适用场景最适合的场景1. 数据仓库建设 - 大规模数据存储 - 复杂的ETL处理 - 历史数据分析 2. 批处理分析 - 离线数据处理 - 定期报表生成 - 数据挖掘任务 3. 数据探索 - 临时查询分析 - 数据质量检查 - 业务指标计算不适合的场景1. 实时处理 - 毫秒级响应需求 - 流式数据处理 - 在线事务处理 2. 小数据集 - 数据量小于GB级别 - 简单的查询操作 - 频繁的更新操作 3. 高并发查询 - 大量并发用户 - 交互式分析 - 在线服务查询1.6 Hive的优势与局限性1.6.1 主要优势1. 易于使用-- 熟悉的SQL语法 SELECT department, AVG(salary) as avg_salary FROM employees WHERE hire_date 2020-01-01 GROUP BY department ORDER BY avg_salary DESC;2. 可扩展性扩展能力 ├── 水平扩展增加节点提升处理能力 ├── 存储扩展支持PB级数据存储 ├── 计算扩展支持多种执行引擎 └── 功能扩展支持UDF和自定义格式3. 成本效益成本优势 ├── 开源免费 ├── 商用硬件 ├── 高存储效率 └── 低运维成本4. 生态集成集成能力 ├── Hadoop生态系统 ├── BI工具集成 ├── 数据科学平台 └── 云平台支持1.6.2 主要局限性1. 性能限制性能问题 ├── 高延迟不适合实时查询 ├── 启动开销MapReduce作业启动慢 ├── 中间结果频繁的磁盘I/O └── 小文件问题影响性能2. 功能限制功能限制 ├── 不支持行级更新 ├── 不支持实时插入 ├── 事务支持有限 └── 索引功能较弱3. 学习曲线学习难点 ├── 分布式概念 ├── 性能调优 ├── 故障排除 └── 最佳实践1.7本章小结核心概念回顾Hive定位基于Hadoop的数据仓库软件提供SQL-like查询能力架构组件客户端、核心服务、执行引擎、存储层四层架构工作原理HiveQL解析→优化→执行计划→分布式执行数据模型数据库→表→分区→分桶的层次结构生态定位大数据分析的重要组件适合批处理场景技术特色SQL兼容性降低学习成本便于数据分析师使用可扩展性支持PB级数据处理和水平扩展灵活性支持多种数据格式和存储系统成熟度经过多年发展功能完善生态丰富成本效益开源免费运行在商用硬件上适用场景数据仓库建设大规模数据存储和管理批处理分析离线数据处理和报表生成数据探索临时查询和数据挖不适用场景实时处理毫秒级响应和流式处理OLTP系统频繁更新和事务处理小数据集GB级别以下的数据处理以上是第一章啊啊啊啊加油啊

相关新闻