Hbase创建表插入查询数据案例

作者: 云计算机网 分类: 云计算知识 发布时间: 2015-03-08 22:10

package org.test;



import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.NavigableMap;
import java.util.Set;
import java.util.Vector;


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.KeyValue;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;


/*
* tab_global param:userid
*
* tab_user2id info:id
*
* tab_id2user info:username, info:password
*
* tab_users user:follow user:followd user:inbox user:sent
*
* tab_post post:content
*
* */


//hbase接口类
public class HbaseIf {
Configuration conf;
public static HbaseIf ghbase = null;

public static HbaseIf getInstance(){
if(ghbase == null)
ghbase = new HbaseIf();
return ghbase;
}


HbaseIf() {

conf = HBaseConfiguration.create();
}


//创建表的方法
public void create_table(String name, String col, int version)
throws Exception {
HBaseAdmin admin = new HBaseAdmin(conf);


//先检查表是否存在
if (admin.tableExists(name)) {
admin.disableTable(name);
admin.deleteTable(name);
}


HTableDescriptor tableDesc = new HTableDescriptor(name);
HColumnDescriptor hd = new HColumnDescriptor(col);
hd.setMaxVersions(version);
tableDesc.addFamily(hd);
admin.createTable(tableDesc);
admin.close();
}


public List<Post> getPost(String username) throws Exception{
List<Post> list = new ArrayList<Post>();
long id = this.getIdByUsername(username);

//byte[] begin = Bytes.add(Bytes.toBytes(id), Bytes.toBytes(Long.MAX_VALUE-Long.MAX_VALUE));
byte[] begin = Bytes.toBytes(id);
//byte[] end = Bytes.add(Bytes.toBytes(id), Bytes.toBytes(Long.MAX_VALUE));
byte[] end = Bytes.toBytes(id+1);


Scan s = new Scan();
s.setStartRow(begin);
s.setStopRow(end);

HTable tab_post = new HTable(conf, "tab_post");
HTable tab_inbox = new HTable(conf, "tab_inbox");
ResultScanner ss = tab_inbox.getScanner(s);
Get get = null;
Post p = null;

for (Result r : ss) {
byte[] postid = r.getValue(Bytes.toBytes("postid"), null);

get = new Get(postid);
Result rs = tab_post.get(get);
String post_username = Bytes.toString(rs.getValue(Bytes.toBytes("post"), Bytes.toBytes("username")));
String post_content = Bytes.toString(rs.getValue(Bytes.toBytes("post"), Bytes.toBytes("content")));
String post_ts = Bytes.toString(rs.getValue(Bytes.toBytes("post"), Bytes.toBytes("ts")));
  • 我们都知道在Windows主机上构建的ftp不能直接更改文件权限,当然我们还需要适当地设置才能进行修改,今天就让爱站技术频道小编带大家来了解详解ftp创建文件权限问题。

    我们都知道在Windows主机上构建的ftp不能直接更改文件权限,当然我们还需要适当地设置才能进行修改,今天就让爱站技术频道小编带大家来了解详解ftp创建文件权限问题。

    详解ftp创建文件权限问题

    一、问题

    有一个这样的需求,admin为一个Linux为其FTP应用创建的一个有权限限制的用户,通过admin用户可以进行登录FTP服务,登录FTP服务后,创建文件夹,该文件夹的用户和用户组都是admin,属性为755,即只有admin用户才有写的权限,但是,FTP后台是通过b用户登录linux系统执行程序上传文件到FTP服务器,由于FTP服务器的文件夹都是由admin用户创建的,且属性为755,b用户根本没有写的权限,导致程序上传文件失败。

    二、分析

    那么解决问题的方法应该很容易,既然admin用户创建的目录默认属性为755,那么只要将默认属性改为775,并将b用户添加到admin所属用户组里面去,问题就解决了。

    三、解决

    1、因为系统默认的登录用户是b,为了方便测试,需要登录到admin用户,然后创建文件夹看看默认属性是否改变。通过b用户su到admin用户的时候报出了  This account is currently not available.  错误。才想到,当时创建admin用户的时候是用户的shell是禁止登录的,这里为了方便测试,通过如下命令开启shell登录:

      $ sudo usermod -s /bin/bash admin

    2、然后修改系统环境变量/etc/profile文件,设置umask为002 (目录默认属性 777-002=775,文件默认属性 666-002= 664),source 文件生效后,切换到admin用户创建文件夹试试:发现目录的默认属性成功改了,变为755了

       drwxrwxr-x 2 admin admin 4.0K Dec 6 22:54 a

    3、然后用admin登录FTP,新建一个文件夹看看,发现其权限还是755

    4、由于对FTP并不熟悉,开始并没有想到FTP那里去,而是在捣鼓各种Linux用户组和用户权限的设置,尝试都没有用。最后静下来慢慢思考,突然想到,用admin账户登录FTP创建的文件属性一直是755,这里登录的只是FTP应用,没有登录到shell,所以才会不受Linux环境变量中umask的影响,而修改umask后的admin登录shell后创建的文件属性是775,这里登录到了shell,是根据umask的值没有问题。既然发现了问题,那么想到FTP应该也会有类似Linux  umask的设置才对,于是找到了FTP的配置文件,果然发现了如下的参数:

    #p#分页标题#e#

    5、修改FTP的Umask的值为002,重启FTP服务,发现问题解决了。

    注:这次问题虽小,也比较快解决了,告诫自己!在捣鼓一些应用服务的前,要先充分了解和熟悉这些应用服务的资料配置等,切莫贪快,否则,出现了问题,自己都不知道从何排查。

    上文是详解ftp创建文件权限问题,感谢大家的阅读,希望大家能继续支持爱站技术频道!

  • 相关推荐:

  • 详解ftp创建文件权限问题
  • 如何用win7创建个人ftp站
  • 如何查看景安的所有网络
  • 网站建设空间明细报价表
  • 复苏继续HPE在高增长市场
  • 抖音vbs表白代码制作教程
  • 爱奇艺弹幕怎么发?爱奇
  • QQ空间名字怎么改教程
  • wps表格自动求和方法教程
  • 腾讯tim表情包怎么添加添
  • 网站内容禁止违规转载,转载授权联系中国云计算网