首页 > 其他分享 >今日总结

今日总结

时间:2023-12-19 22:22:35浏览次数:23  
标签:总结 String put Score Student SC 今日 public

理解HBase在Hadoop体系结构中的角色;
熟练使用HBase操作常用的Shell命令;
熟悉HBase操作常用的Java API。
二、实验平台
操作系统:
Hadoop版本:3.2.2
HBase版本:2.2.2
JDK版本:1.8
Java IDE:eclipse
三、实验内容和要求
使用HBase Shell命令完成下列任务:
列出HBase所有的表的相关信息,例如表名;
list
1


在终端打印出指定的表的所有记录数据;
scan 'Student'
1


向已经创建好的表添加和删除指定的列族或列;
添加
put 'Student','s000','S_Name','Huangkaiyu'
1


删除
delete 'Student','s000','S_Name'
1


清空指定的表的所有记录数据;
truncate 'Student'
1
统计表的行数。
count 'Student'
1


2.现有以下关系型数据库中的表和数据,要求将其转换为适合于HBase存储的表并插入数据:
学生表(Student)

学号(S_No) 姓名(S_Name) 性别(S_Sex) 年龄(S_Age)
2015001 Zhangsan male 23
2015002 Mary female 22
2015003 Lisi male 24
create 'Student','S_No','S_Name','S_Sex','S_Age'
put 'Student','s001','S_No','2015001'
put 'Student','s001','S_Name','Zhangsan'
put 'Student','s001','S_Sex','male'
put 'Student','s001','S_Age','23'
put 'Student','s002','S_No','2015002'
put 'Student','s002','S_Name','Mary'
put 'Student','s002','S_Sex','female'
put 'Student','s002','S_Age','22'
put 'Student','s003','S_No','2015003'
put 'Student','s003','S_Name','Lisi'
put 'Student','s003','S_Sex','male'
put 'Student','s003','S_Age','24'

1
2
3
4
5
6
7
8
9
10
11
12
13
14
课程表(Course)

课程号(C_No) 课程名(C_Name) 学分(C_Credit)
123001 Math 2.0
123002 Computer Science 5.0
123003 English 3.0
create 'Course','C_No','C_Name','C_Credit'
put 'Course','c001','C_No','123001'
put 'Course','c001','C_Name','Math'
put 'Course','c001','C_Credit','2.0'
put 'Course','c002','C_No','123002'
put 'Course','c002','C_Name','Computer'
put 'Course','c002','C_Credit','5.0'
put 'Course','c003','C_No','123003'
put 'Course','c003','C_Name','English'
put 'Course','c003','C_Credit','3.0'


1
2
3
4
5
6
7
8
9
10
11
12
选课表(SC)

学号(SC_No) 课程号(SC_Cno) 成绩(SC_Score)
2015001 123001 86
2015001 123003 69
2015002 123002 77
2015002 123003 99
2015003 123001 98
2015003 123002 95
put 'SC','sc001','SC_Sno','2015001'
put 'SC','sc001','SC_Cno','123001'
put 'SC','sc001','SC_Score','86'
put 'SC','sc002','SC_Sno','2015001'
put 'SC','sc002','SC_Cno','123003'
put 'SC','sc002','SC_Score','69'
put 'SC','sc003','SC_Sno','2015002'
put 'SC','sc003','SC_Cno','123002'
put 'SC','sc003','SC_Score','77'
put 'SC','sc004','SC_Sno','2015002'
put 'SC','sc004','SC_Cno','123003'
put 'SC','sc004','SC_Score','99'
put 'SC','sc005','SC_Sno','2015003'
put 'SC','sc005','SC_Cno','123001'
put 'SC','sc005','SC_Score','98'
put 'SC','sc006','SC_Sno','2015003'
put 'SC','sc006','SC_Cno','123002'
put 'SC','sc006','SC_Score','95'


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
同时,请编程完成以下指定功能:

createTable(String tableName, String[] fields): 创建表,参数tableName为表的名称,字符串数组fields为存储记录各个域名称的数组。要求当HBase已经存在名为tableName的表的时候,先删除原有的表,然后再创建新的表。

建立person表,代码如下:
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;

import java.io.IOException;

public class CreateTable {
public static Configuration configuration;
public static Connection connection;
public static Admin admin;

public static void createTable(String tableName, String[] fields) throws IOException {
init();
TableName tablename = TableName.valueOf(tableName);
if (admin.tableExists(tablename)) {
System.out.println("table is exists!");
admin.disableTable(tablename);
admin.deleteTable(tablename);
}
HTableDescriptor hTableDescriptor = new HTableDescriptor(tablename);
for (String str : fields) {
HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(str);
hTableDescriptor.addFamily(hColumnDescriptor);
}
admin.createTable(hTableDescriptor);
close();
}

public static void init() {
configuration = HBaseConfiguration.create();
configuration.set("hbase.rootdir", "hdfs://localhost:9000/hbase");
try {
connection = ConnectionFactory.createConnection(configuration);
admin = connection.getAdmin();
} catch (IOException e) {
e.printStackTrace();
}
}

public static void close() {
try {
if (admin != null) {
admin.close();
}
if (null != connection) {
connection.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
String[] fields = {"Score"};
try {
createTable("person", fields);
} catch (IOException e) {
e.printStackTrace();
}
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
addRecord(String tableName, String row, String[] fields, String[] values): 向表tableName、行row(用S_Name表示)和字符串数组files指定的单元格中添加对应的数据values。其中fields中每个元素如果对应的列族下还有相应的列限定符的话,用"columnFamily:column"表示。例如,同时向"Math"、“Computer Science”、"English"三列添加成绩时,字符串数组fields为{“Score:Math”, “Score: Computer Science”, “Score:English”},数组values存储这三门课的成绩。

增加Score记录,代码如下:
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;

import java.io.IOException;

public class AddRecord {
public static Configuration configuration;
public static Connection connection;
public static Admin admin;

public static void addRecord(String tableName, String row, String[] fields, String[] values) throws IOException {
init();
Table table = connection.getTable(TableName.valueOf(tableName));
for (int i = 0; i != fields.length; i++) {
Put put = new Put(row.getBytes());
String[] cols = fields[i].split(":");
put.addColumn(cols[0].getBytes(), cols[1].getBytes(), values[i].getBytes());
table.put(put);
}
table.close();
close();
}

public static void init() {
configuration = HBaseConfiguration.create();
configuration.set("hbase.rootdir", "hdfs://localhost:9000/hbase");
try {
connection = ConnectionFactory.createConnection(configuration);
admin = connection.getAdmin();
} catch (IOException e) {
e.printStackTrace();
}
}

public static void close() {
try {
if (admin != null) {
admin.close();
}
if (null != connection) {
connection.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
String[] fields = {"Score:Math", "Score:Computer Science", "Score:English"};
String[] values = {"99", "80", "100"};
try {
addRecord("person", "Score", fields, values);
} catch (IOException e) {
e.printStackTrace();
}

}
}

55
scanColumn(String tableName, String column): 浏览表tableName某一列的数据,如果某一行记录中该列数据不存在,则返回null。要求当参数column为某一列族名称时,如果底下有若干个列限定符,则要列出每个列限定符代表的列的数据;当参数column为某一列具体名称(例如"Score:Math")时,只需要列出该列的数据。
原文链接:https://blog.csdn.net/qq_50596778/article/details/120552574

标签:总结,String,put,Score,Student,SC,今日,public
From: https://www.cnblogs.com/zhaoyueheng/p/17914942.html

相关文章

  • 2023.12.19——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.设计模式明日计划:学习......
  • 每日总结
    今天复习了设计模式中的7大原则一、设计模式的七大原则1、单一职责原则(SRP)  对类来说,即一个类应该只负责一项职责。如类A负责两个不同职责:职责1,职责2。当职责1需求变更而改变A时,可能造成职责2执行错误,所以要将类A的粒度分解为A1,A2。2、开闭原则(OCP)  开闭原则就是说对......
  • 12.19每日总结
    今天接着进行了软件企业文化的大作业摘要:本销售计划书旨在为我们创新的软件产品制定全面的销售策略,以确保产品成功进入市场并取得可观的销售业绩。我们的软件产品旨在满足客户需求,并通过有效的市场推广和销售渠道来实现广泛的市场覆盖。3.1产品概述产品名称:大数据分析软件......
  • 2023-2024第一学期第十二周助教总结
    本次总结所属课程2023-2024第一学期计算机基础与程序设计本次作业要求作业要求作业提交情况提交情况一、作业提交情况:本周大部分同学可以做到按时提交作业,只有一小部分同学在作业截止时间内未能按时提交,希望这些同学可以重视每老师布置的作业,认真完成并按时提......
  • flutter开发总结2
    整个flutter的项目的大局观:分层架构、单一职责、模块化我们遵循这几种构建的理念,在不同的项目中可能具体的实现不同,但是大体是这样的。分层架构主要体现在如:业务逻辑层、数据层、表示层单一职责和模块化:common代表一些通用的工具类,data负责接收数据相关,page代表每个界面,login是一个......
  • CSP-S 400分 题单总结
    CSP-S400分题单总结(未完待续)洛谷题号CSP-S400分题单总结(未完待续)洛谷题号知识点/类型T2T3T4T5T6知识点/类型T2T3T4T5拓扑排序 180710387077 树形DP 862530474362 241971132899   874440843177 271219833243  ......
  • 避坑合集|芝麻免押失败排查思路超详细总结(小程序场景)
    在使用小程序对接芝麻免押时,遇到了一些报错,估计把这个接口的坑都踩了个遍,这篇汇总一下我在芝麻免押上遇到的免押失败问题合集,大家注意避坑~对接流程......
  • WebAPI局域网访问出错(经验总结)
    WebAPI局域网访问出错(经验总结)经验一:未设置入站规则方法:控制面板->系统和安全->WindowsDefender防火墙->高级设置->入站规则->新建规则->端口->,如图:下一页特定本地端口为WebAPI在IIS中设置的端口号。选择允许连接,最后起个名称完成即可。即可通过此设备......
  • 2023年12月18日总结
    更好的观看总结冬月初六,天气还是很寒冷。好在教室里面开了空调,还是很暖和。一眼今天的内容,技巧与思想?分治、启发式合并、分块算法、莫队算法、CDQ分治、整体二分?难以言表。洛谷首页的做题计划还鸽了好多题啊!做不完啊。先来一道dp的题目。P8820[CSP-S2022]数据传输之前......
  • 音视频相关接口概念总结
    HDMIHDMI(High-DefinitionMultimediaInterface)是一种数字音视频接口标准,广泛用于连接高清晰度电视、显示器、投影仪、音响等设备。HDMI提供了一个单一的数字接口,支持高清晰度视频和多声道音频传输,同时还能传输其他数据,如显示器信息和遥控器信号。以下是HDMI的一些主要特点和......