[01].平均值案例

AvgDemo

  • 这里只贴出求身高平均值示例,其他的都一样。
  • 项目源码和jar包请在主页连接中获取资源。

    1. import java.io.IOException;
    2. import java.util.List;
    3. import org.apache.hadoop.conf.Configuration;
    4. import org.apache.hadoop.hbase.Cell;
    5. import org.apache.hadoop.hbase.CellUtil;
    6. import org.apache.hadoop.hbase.HBaseConfiguration;
    7. import org.apache.hadoop.hbase.TableName;
    8. import org.apache.hadoop.hbase.client.Admin;
    9. import org.apache.hadoop.hbase.client.Connection;
    10. import org.apache.hadoop.hbase.client.ConnectionFactory;
    11. import org.apache.hadoop.hbase.client.Result;
    12. import org.apache.hadoop.hbase.client.ResultScanner;
    13. import org.apache.hadoop.hbase.client.Scan;
    14. import org.apache.hadoop.hbase.client.Table;
    15. import org.apache.hadoop.hbase.util.Bytes;
    16. public class AvgDemo {
    17. public static void main(String[] args) throws IOException {
    18. // 创建与数据库的连接
    19. Configuration conf = HBaseConfiguration.create();
    20. conf.set("hbase.zookeeper.quorum", "192.168.109.123");
    21. //conf.set("hbase.zookeeper.quorum", "master,slave1,slave2");
    22. conf.set("hbase.zookeeper.property.clientPort", "2181");
    23. Connection connection = ConnectionFactory.createConnection(conf);
    24. // 定义要操作的表名
    25. TableName tableName = TableName.valueOf("hadoop:student");
    26. // 表相关的操作需要获取管理员对象,通过管理员对象操作表
    27. Admin admin = connection.getAdmin();
    28. // 检测指定的表是否存在
    29. boolean isExists = admin.tableExists(tableName);
    30. if (isExists) {
    31. System.out.println("[表格存在]开始操作==========================================");
    32. Table table = connection.getTable(tableName);
    33. Scan scan = new Scan();
    34. scan.addColumn("stu_info".getBytes(), "stature".getBytes());
    35. //遍历单元格
    36. int statureAll = 0;
    37. int cellsNum = 0;
    38. ResultScanner scanner = table.getScanner(scan);
    39. for (Result result : scanner) {
    40. List<Cell> cells = result.listCells();
    41. cellsNum += cells.size();
    42. for (Cell cell : cells) {
    43. byte[] column_name = CellUtil.cloneQualifier(cell); // 该cell的列名
    44. byte[] value = CellUtil.cloneValue(cell); // 该cell的值
    45. String column = Bytes.toString(column_name);
    46. if ("stature".equals(column)) {
    47. Integer hight = Integer.parseInt(Bytes.toString(value));
    48. statureAll += hight;
    49. System.out.println("[学生身高]:"+hight);
    50. }
    51. }
    52. }
    53. System.out.println("[平均身高]:" + statureAll / cellsNum);
    54. table.close(); // 关闭表
    55. connection.close();// 关闭数据库
    56. System.out.println("[操作完成]资源释放==========================================");
    57. } else {
    58. System.out.println("[表不存在]操作结束==========================================");
    59. }
    60. }
    61. }

    [02].打包运行效果

  • 上传后使用命令:

    1. java -jar avg_xxx.jar
  • 身高

32.Hbase-平均值案例 - 图1

  • 英语

32.Hbase-平均值案例 - 图2

  • 数学

32.Hbase-平均值案例 - 图3

[03].如何打包?

  • 首先让你的项目运行起来(不管报不报错),不然Eclipse不知道打包后的启动文件。
  • 右键项目选择Export

32.Hbase-平均值案例 - 图4

  • 选择Runnable JAR file导出可运行jar包

32.Hbase-平均值案例 - 图5

  1. 第一个框框:项目主程序
  2. 第二个框框:导出的路径(自己填写)
  3. 第三:把所有jar资源全部导出,勾选第二个选项。