./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 10 100用这个方法生成小数点后5位数
时间: 2023-12-31 21:05:29 浏览: 212
这个命令是在 Hadoop 上运行一个计算 pi 的示例程序。其中,参数 10 表示计算的 map 数量,100 表示每个 map 任务要计算的数据量。由于 pi 是一个无限不循环小数,程序采用 Monte Carlo 方法来估算 pi 的值。
如果你想将计算结果保留小数点后 5 位数,可以修改程序代码或者在运行命令时添加一个额外的命令来进行格式化。
修改代码:
1. 打开 `hadoop-mapreduce-examples-3.1.3.jar` 文件,解压 `pi.class` 文件。
2. 打开 `pi.class` 文件,找到 `reduce()` 方法。
3. 在 `reduce()` 方法中添加以下代码:
```
BigDecimal pi = new BigDecimal(4.0 * count / total, new MathContext(6));
```
这行代码将计算得到的 pi 值保留小数点后 5 位数,存储在 `pi` 变量中。
4. 重新打包 `pi.class` 文件。
5. 将修改后的 `hadoop-mapreduce-examples-3.1.3.jar` 文件上传到 Hadoop 集群。
6. 运行以下命令:
```
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 10 100
```
这将在 Hadoop 上运行修改后的程序,并输出计算得到的 pi 值。
添加格式化命令:
1. 运行以下命令:
```
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 10 100 | awk '{printf "%.5f\n", $1}'
```
这将在 Hadoop 上运行示例程序,并将计算得到的 pi 值输出到标准输出。
2. `awk` 命令将标准输出中的第一个字段(即计算得到的 pi 值)格式化为小数点后 5 位数,并输出到控制台。
阅读全文