Java+Hadoop:实现股票2014 - 2020年月度波动统计及代码示例
代码如下: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.FloatWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import java.io.IOException; import java.util.HashMap; import java.util.Map; public class StockAnalyzer { public static class StockMapper extends Mapper<Object, Text, Text, FloatWritable> { private Text month = new Text(); private FloatWritable volatility = new FloatWritable(); public void map(Object key, Text value, Context context) throws IOException, InterruptedException { String line = value.toString(); String[] fields = line.split(","); if (fields.length == 7 && !fields[0].equals("trade_date")) { String tradeDate = fields[0]; String[] dateParts = tradeDate.split("-"); if (dateParts.length >= 2) { String tradeMonth = dateParts[0] + "." + dateParts[1]; float closePrice = Float.parseFloat(fields[4]); float highPrice = Float.parseFloat(fields[2]); float lowPrice = Float.parseFloat(fields[3]); float volatilityValue = highPrice - lowPrice; volatility.set(volatilityValue); context.write(new Text(tradeMonth), volatility); } } } } public static class StockReducer extends Reducer<Text, FloatWritable, Text, Text> { private Text result = new Text(); public void reduce(Text key, Iterable<FloatWritable> values, Context context) throws IOException, InterruptedException { float totalVolatility = 0; float totalPrice = 0; int count = 0; for (FloatWritable value : values) { totalVolatility += value.get(); count++; } float averagePrice = totalVolatility / count; float volatilityRate = (totalVolatility / averagePrice) * 100; String outputValue = String.format("%.2f-%.2f %.2f%%", averagePrice, totalVolatility, volatilityRate); result.set(outputValue); context.write(key, result); } } public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "stock analyzer"); job.setJarByClass(StockAnalyzer.class); job.setMapperClass(StockMapper.class); job.setReducerClass(StockReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(FloatWritable.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); } } ``` pom.xml文件如下: ```xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>stock-analyzer</artifactId> <version>1.0-SNAPSHOT</version> <properties> <hadoop.version>3.2.2</hadoop.version> </properties> <dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>${hadoop.version}</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-mapreduce-client-core</artifactId> <version>${hadoop.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.1.1</version> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>StockAnalyzer</mainClass> </manifest> </archive> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project> ``` ######[AI写代码神器 | 3687点数解答 | 2024-11-13 12:21:32]
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)387
- 15 列信息揭秘:教职工基本信息数据大起底(字节豆包 | 44点数解答 | 2024-11-21 08:18:34)200
- 15 列信息揭秘:教职工基本信息大公开! (字节豆包 | 15点数解答 | 2024-11-21 08:26:12)196
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)290
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1093
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)320
- 探寻数组中最长摆动子序列长度:思路剖析与代码优化(GPT | 758点数解答 | 2024-12-23 23:18:29)248
- 独家剖析:求解数组最长摆动子序列长度的代码实现与改进建议(GPT | 350点数解答 | 2024-12-23 23:20:54)245
- Java 实现获取 2014 - 12 - 11T12:28:44 + 01:00 格式时间字符串及注意事项 (字节豆包 | 172点数解答 | 2024-12-20 14:16:56)146
- Three.js 示例代码解析:优化场景渲染与注意要点(字节豆包 | 164点数解答 | 2025-02-27 23:30:20)242
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)289
- "Java Code: Uncovering Stock Statistics through CSV File Reading"(字节豆包 | 66点数解答 | 2024-11-13 15:31:04)286