first commit
This commit is contained in:
192
spark-processor/README_DATABASE.md
Normal file
192
spark-processor/README_DATABASE.md
Normal file
@@ -0,0 +1,192 @@
|
||||
# 🗄️ 农业股票数据处理器 - MySQL数据库存储
|
||||
|
||||
## 📋 概述
|
||||
|
||||
本文档说明如何配置和使用农业股票数据处理器的MySQL数据库存储功能。处理器现在支持将Spark分析结果直接保存到MySQL数据库中,而不仅仅是文件系统。
|
||||
|
||||
## 🔧 数据库配置
|
||||
|
||||
### 1. 数据库表结构
|
||||
|
||||
首先需要创建必要的数据库表。执行以下SQL脚本:
|
||||
|
||||
```bash
|
||||
# 执行扩展表结构脚本
|
||||
mysql -u your_username -p your_database < database_tables.sql
|
||||
```
|
||||
|
||||
### 2. 配置文件
|
||||
|
||||
在 `application.conf` 中配置数据库连接(如果文件不存在,程序会使用默认值):
|
||||
|
||||
```hocon
|
||||
mysql {
|
||||
host = "localhost"
|
||||
port = 3306
|
||||
database = "agricultural_stock"
|
||||
user = "root"
|
||||
password = "your_password"
|
||||
}
|
||||
|
||||
spark {
|
||||
master = "local[*]"
|
||||
}
|
||||
|
||||
output {
|
||||
path = "/tmp/spark-output" # 备用文件输出路径
|
||||
}
|
||||
```
|
||||
|
||||
## 📊 数据存储结构
|
||||
|
||||
### 处理结果存储到以下表:
|
||||
|
||||
#### 1. `market_analysis` - 市场分析表
|
||||
存储每日市场总览数据:
|
||||
- 上涨/下跌/平盘股票数量
|
||||
- 总市值、成交量、成交额
|
||||
- 平均涨跌幅
|
||||
|
||||
#### 2. `stock_technical_indicators` - 技术指标表
|
||||
存储股票技术指标:
|
||||
- 移动平均线 (MA5, MA10, MA20, MA30)
|
||||
- RSI相对强弱指标
|
||||
- MACD指标 (DIF, DEA)
|
||||
- 布林带 (上轨、中轨、下轨)
|
||||
|
||||
#### 3. `industry_analysis` - 行业分析表
|
||||
存储行业表现数据:
|
||||
- 行业平均涨跌幅
|
||||
- 行业股票数量
|
||||
- 行业总市值和成交量
|
||||
|
||||
#### 4. `market_trends` - 市场趋势表
|
||||
存储历史趋势数据:
|
||||
- 每日平均价格和涨跌幅
|
||||
- 每日总成交量和成交额
|
||||
|
||||
## 🚀 运行方式
|
||||
|
||||
### 1. 标准运行
|
||||
```bash
|
||||
# 编译项目
|
||||
mvn clean compile
|
||||
|
||||
# 运行处理器(批处理模式)
|
||||
mvn exec:java -Dexec.mainClass="com.agricultural.spark.StockDataProcessor"
|
||||
```
|
||||
|
||||
### 2. 打包运行
|
||||
```bash
|
||||
# 打包成可执行JAR
|
||||
mvn package
|
||||
|
||||
# 运行JAR包
|
||||
java -jar target/spark-data-processor-1.0.0.jar
|
||||
```
|
||||
|
||||
## 📈 数据流程
|
||||
|
||||
```
|
||||
MySQL stock_data (输入)
|
||||
↓
|
||||
数据清洗和处理
|
||||
↓
|
||||
技术指标计算
|
||||
↓
|
||||
市场分析计算
|
||||
↓
|
||||
保存到MySQL数据库表
|
||||
↓ ↓
|
||||
主要表 备用文件
|
||||
```
|
||||
|
||||
## 🔍 数据查询示例
|
||||
|
||||
### 查看最新市场分析
|
||||
```sql
|
||||
SELECT * FROM market_analysis
|
||||
ORDER BY analysis_date DESC
|
||||
LIMIT 1;
|
||||
```
|
||||
|
||||
### 查看特定股票技术指标
|
||||
```sql
|
||||
SELECT stock_name, trade_date, close_price, ma5, ma20, rsi
|
||||
FROM stock_technical_indicators
|
||||
WHERE stock_code = 'sz000876'
|
||||
ORDER BY trade_date DESC
|
||||
LIMIT 30;
|
||||
```
|
||||
|
||||
### 查看行业表现排行
|
||||
```sql
|
||||
SELECT industry, avg_change_percent, stock_count, total_market_cap
|
||||
FROM industry_analysis
|
||||
WHERE analysis_date = (SELECT MAX(analysis_date) FROM industry_analysis)
|
||||
ORDER BY avg_change_percent DESC;
|
||||
```
|
||||
|
||||
### 查看市场趋势
|
||||
```sql
|
||||
SELECT trade_date, avg_change_percent, total_volume
|
||||
FROM market_trends
|
||||
ORDER BY trade_date DESC
|
||||
LIMIT 30;
|
||||
```
|
||||
|
||||
## ⚠️ 注意事项
|
||||
|
||||
### 1. 错误处理
|
||||
- 程序会首先测试数据库连接
|
||||
- 如果数据库连接失败,会回退到文件保存模式
|
||||
- 所有数据库操作都有异常处理,不会中断主流程
|
||||
|
||||
### 2. 性能考虑
|
||||
- 技术指标数据量较大,采用批量写入方式
|
||||
- 市场分析数据使用 `ON DUPLICATE KEY UPDATE` 避免重复
|
||||
- 添加了必要的数据库索引优化查询性能
|
||||
|
||||
### 3. 数据一致性
|
||||
- `market_analysis` 表按日期去重
|
||||
- 技术指标表按股票代码和日期建立组合索引
|
||||
- 所有表都包含创建时间和更新时间字段
|
||||
|
||||
## 🛠️ 故障排除
|
||||
|
||||
### 1. 数据库连接失败
|
||||
检查配置文件中的数据库连接信息:
|
||||
- 主机地址和端口
|
||||
- 数据库名称
|
||||
- 用户名和密码
|
||||
- 确保MySQL服务正在运行
|
||||
|
||||
### 2. 表不存在错误
|
||||
确保已执行 `database_tables.sql` 脚本创建所有必要的表。
|
||||
|
||||
### 3. 权限问题
|
||||
确保数据库用户具有以下权限:
|
||||
- SELECT (读取 stock_data)
|
||||
- INSERT (写入分析结果)
|
||||
- UPDATE (更新已有数据)
|
||||
|
||||
### 4. 内存不足
|
||||
对于大量数据,可能需要调整Spark配置:
|
||||
```bash
|
||||
# 增加内存限制
|
||||
export SPARK_DRIVER_MEMORY=2g
|
||||
export SPARK_EXECUTOR_MEMORY=2g
|
||||
```
|
||||
|
||||
## 📝 日志说明
|
||||
|
||||
程序运行时会输出详细日志,包括:
|
||||
- 数据库连接状态
|
||||
- 各阶段处理进度
|
||||
- 数据保存结果
|
||||
- 错误信息和回退操作
|
||||
|
||||
关键日志信息:
|
||||
- `数据库连接测试成功` - 数据库连接正常
|
||||
- `市场分析结果保存成功` - 数据已保存到数据库
|
||||
- `保存到数据库失败,回退到文件保存` - 使用备用保存方式
|
||||
Reference in New Issue
Block a user