天天看點

關注使用者(一) | 學習筆記

開發者學堂課程【分布式資料庫 HBase 快速入門:關注使用者(一)】學習筆記,與課程緊密聯系,讓使用者快速學習知識。

課程位址:

https://developer.aliyun.com/learning/course/101/detail/1773

關注使用者(一)

内容介紹

一、關注使用者(一)

關注使用者:

package com. atguigu.weibo;

public class WeiBoUtil {

private static Configuration configuration = HBaseConfiguration.create() ;

static {

configuration.set("hbase.zookeeper. quorum",, "192.168.9.102");

}

//建立命名空間

public static void createNamespace(String ns){

//建立連接配接

ConnectionFactory.createConnection(configuration) ;

Admin admin = connection.getAdmin() ;

//建立NS描述器

NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create(ns)

build();

//建立操作

admin.createNamespace (namespaceDescriptor);

//關閉資源admin.close() ;

connection.close() ;

}

//建立表

public static void createTable(String tableName, String... cfs){

//建立連接配接

Connection connection = ConnectionFactory.createConnection(configuration);

Admin admin = connection.getAdmin() ;

HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName. valueOf(tableName));

//循環添加列族

for (String cf : cfs){

HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(cf) ;

hColumnDescriptor.setMaxVersions(versions);

hTableDescriptor.addFamily (hColumnDescriptor);

admin.createTable(hTableDescriptor);

//關閉資源

admin.close() ;

connection.close() :

}

/**

*1.更新微網誌内容表資料

*2.更新收件箱表資料

*     --擷取目前操作人的fans

*     --去往收件箱表依次更新資料

*@param uid

* @paramcontent

*@throws IOException

*/

//釋出微網誌

public static void createData(String uid,String content){

Connection connection = ConnectionFactory.createConnection(configuration);

Table contTable = connection.getTable(TableName. value0f(Constant.CONTENT));

Table relaTable = connection.getTable(TableName. valueOf(Constant.RELATIONS)) ;

Table inboxTable = connection.getTable(TableName. valueOf(Constant.INBOX));

//拼接RK

long ts = System. currentTimeMillis() ;

String rowKey = uid + "_" + ts;

//生産put對象

Put put = new Put(Bytes.toBytes(rowKey)) ;

put. addColumn(Bytes.toBytes( s:"info"),Bytes.toBytes( s:"content"),Bytes.toBytes(content)) ;

//往内容表添加資料

contTable.put(put);

//擷取關系表中的fans

Get get = new Get(Bytes.toBytes(uid)) ;

get.addFamily(Bytes.toBytes( s: "fans") ) ;

Result result = relaTable.get(get);

Ce11[] cells = result.rawCells() ;

if (cells.length <= 0){

return;

}

//更新fans收件箱表

List puts = new ArrayList<>();

for (Cell cell : cells) {

byte[] cloneQualifier = Cellutil.cloneQualifier(cell);

Put inboxPut = new Put(cloneQualifier);

inboxPut.addColumn(Bytes.toBytes(s:"info"),Bytes.toBytes(uid) ,Bytes.toBytes())

puts.add(inboxPut) ;

//關閉資源admin.close() ;

connection.close() ;

}

/**

*1.在使用者關系表

*—-添加操作人的attends

*--添加被操作人的fans

* 2.在收件箱中

*--在微網誌内容中擷取被關注者的3條資料(rowkey)

*--在收件箱表中添加操作人的關注者資訊

*@param uid

*@param uids

*/

//關注使用者

public static void addAttend(String uid,String.. . uids) throws IOException {

//擷取連接配接

Connection connection = ConnectionFactory.createConnection(configuration);

//擷取三張操作的表對象

Table contTable = connection.getTable(TableName.valueOf(Constant.CONTENT));

Table relaTable = connection.getTable(TableName. value0f(Constant.RELATIONS) ;

Table inboxTable = connection.getTable(TableName.value0f(Constant.INBOX) );

Put relaPut = new Put (Bytes.toBytes(uid)) ;

ArrayList puts = new ArrayList<>() ;

for (String s : uids) {

relaPut.addColumn(Bytes.toBytes(s:"attends"),Bytes.toBytes(s),Bytes.toBytes(s))  

//建立被關注者的put對象

put fansPut = new Put(Bytes.toBytes(s)) ;

fansPut. addColumn(Bytes.toBytes( s:"fans"),Bytes.toBytes(uid)Bytes.toBytes(uid);

puts.add(fansPut) ;

}

puts.add(relaPut) ;

relaTable.put(puts):

}

//取關使用者

//擷取微網誌内容(初始化頁面)

//擷取微網誌内容(檢視某個人所有微網誌内容)

}

繼續閱讀