1.绪论

 Computer science should be called computing science, for the same reason why surgery is not called knife science. - E.Dijkstra
在这里插入图片描述

  • 好算法:
     - 正确
     - 健壮:能够辨别不合法的输入并做适当处理,而不致非正常退出
     - 可读:结构化 + 准确命名 + 注释 + …
     - 效率:速度尽可能的快,存储空间尽可能的少
    算法 != 程序
    Algorithms + Data Structures = Programs
    (Algorithms + Data Structures) * Efficiency = Computation

渐进分析、复杂度层级

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

a.级数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

b.正确性

在这里插入图片描述

c.封底估算

在这里插入图片描述
在这里插入图片描述

迭代与递归,减而治之

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

请按照以下模板写一份大数据实验报告 简单库存统计 软件工程 摘要:为解决(XXX这里可以是背景或不足)问题或为了帮助、提升(XXX工作效率),运用或采用、使用(XXX)技术,使用XXX编程语言,以(MySQL 或其他)作为数据库,开发设计了(自己的论文题目的系统)。该系统实现了(XXX、XXX、XXX等功能,根据自己的系统来写)。系统界面良好(美观、清晰等)、操作简单、功能实用、有效提高(或提升)了(XXX的效率)或者改善了XXX的现状(最后达到的目的,比如提高了XXX效率,方便了XXX)。 关键词:关键词1 关键词2 关键词3 (英文题目:) Data Science & Big Data Technology (Name) Abstract: Keywords:word1; word2; word3 1. 绪论 1.1 研究背景 1.2 研究现状 2. 关键技术 说明: 样式中的“标题1”为章标题;一级标题;“标题2”为节标题,二级标题;“标题3”为小节,三级标题;“标题4”为图片图题用,编号自动跟章标题挂钩;“标题5”为表格表题用,编号自动跟章标题挂钩;“图片”为图片的格式;“表格”为表格的格式。 3. 系统分析 3.1 可行性研究 3.1.1 经济可行性 3.1.2 社会可行性 3.1.3 操作可行性 3.2 需求分析 3.3 系统功能分析 4. 系统设计 5. 系统实现 5.1 创建目录 hadoop fs -mkdir -p /inventory/input 5.2 上传文件 hadoop fs -put ~/Downloads/inventory_data.txt /inventory/input/ 5.3 验证上传结果 hadoop fs -ls /inventory/input/ 5.4 查看文件内容 hadoop fs -cat /inventory/input/inventory_data.txt 5.5 编译Java文件 javac -cp "/usr/local/hadoop/share/hadoop/common/*:/usr/local/hadoop/share/hadoop/mapreduce/*" InventoryDriver.java InventoryMapper.java InventoryReducer.java 5.6 打包成JAR jar cvf inventory.jar InventoryDriver.java InventoryMapper.java InventoryReducer.java 5.7 运行 hadoop jar inventory.jar InventoryDriver /inventory/input /inventory/output 5.8 结果查看 hadoop fs -cat /inventory/output/part-r-00000 6. 系统测试 7. 总结与展望 相关代码: // InventoryDriver.java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class InventoryDriver { public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "Inventory Statistics"); job.setJarByClass(InventoryDriver.class); job.setMapperClass(InventoryMapper.class); job.setReducerClass(InventoryReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); } } // InventoryMapper.java import java.io.IOException; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; public class InventoryMapper extends Mapper<LongWritable, Text, Text, IntWritable> { private Text monthKey = new Text(); private IntWritable quantity = new IntWritable(); @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String[] parts = value.toString().split("\t"); if (parts.length == 4) { String date = parts[0]; String[] dateParts = date.split("-"); String month = dateParts[0] + "-" + dateParts[1]; // YYYY-MM int inQty = Integer.parseInt(parts[2]); int outQty = Integer.parseInt(parts[3]); // 发送入库量(正数) monthKey.set(month + "_IN"); quantity.set(inQty); context.write(monthKey, quantity); // 发送出库量(负数) monthKey.set(month + "_OUT"); quantity.set(-outQty); context.write(monthKey, quantity); } } } // InventoryReducer.java import java.io.IOException; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Reducer; public class InventoryReducer extends Reducer<Text, IntWritable, Text, IntWritable> { @Override protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } context.write(key, new IntWritable(sum)); } }
07-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值