远程创建hbase表同样的代码在不同的java文件中有时成功有时报错?

查看数: 18909 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2015-4-23 15:35

正文摘要:

代码如下: HBaseConfiguration conf ; HBaseAdmin admin; //HTable table; Configuration cnf = new Configuration(); cnf.set("hbase.zookeeper.quorum", "192.168.100.63,192.168.100.62,192.168.100. ...

回复

jixianqiuxue 发表于 2015-4-23 18:03:34
ashiny 发表于 2015-4-23 17:53
整个代码结构如图
create函数是我自己增加用来在hbase里面新建表的,insert函数是我自己增加用来向建的 ...

个人认为楼主可能玩错了


对于监听的含义没有没有搞清楚。
对于一个程序来讲,你只要顺序执行就可以了。
比如创建完文件夹之后,我接着完成什么事情。这个不需要监听的。

那么什么需要监听。比如像你说的监听文件夹。
这个跟hbase没有关系,而是你对Linux操作系统文件夹的监控。

所以在思路上就是存在问题的。
yuwenge 发表于 2015-4-23 17:31:31
ashiny 发表于 2015-4-23 17:15
添加的JNotify的jar包和文件夹监听程序都测试过是可以正常使用的,但是在listener类里面加上这个函数就报 ...

描述还是不清楚,加的哪个函数,为什么想加这个函数,加了这个函数是否适合分布式,监听,主要的监听的是什么
楼主先把这些问题搞清楚
ashiny 发表于 2015-4-23 17:15:58
yuwenge 发表于 2015-4-23 16:54
条用了其他类,记得让开发环境和集群环境保持一致。
自己添加的第三方类,或则jar包,确保都能够引用到 ...

添加的JNotify的jar包和文件夹监听程序都测试过是可以正常使用的,但是在listener类里面加上这个函数就报错。。。把listener类也贴进来吧:
public class MonitorUpload {
        public static void main(String[] args) {
        String monitedPath = "F:/nextstep";
        int mask = JNotify.FILE_CREATED | JNotify.FILE_DELETED | JNotify.FILE_MODIFIED | JNotify.FILE_RENAMED;
        // 是否监视子目录
        boolean watchSubtree = true;
        try {
            int watchID = JNotify.addWatch(monitedPath, mask, watchSubtree, new Listener());
            Thread.sleep(1000000);
            boolean res = JNotify.removeWatch(watchID);
            if (!res) {
                // invalid
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public static class Listener implements JNotifyListener {

        public void fileRenamed(int wd, String rootPath, String oldName, String newName) {
            print("renamed " + rootPath + " : " + oldName + " -> " + newName);
        }

        public void fileModified(int wd, String rootPath, String name) {
            print("modified " + rootPath + " : " + name);
        }

        public void fileDeleted(int wd, String rootPath, String name) {
            print("deleted " + rootPath + " : " + name);
        }

        public void fileCreated(int wd, String rootPath, String name) {
            print("created " + rootPath + " : " + name);
            try{
                    String newtable = String.valueOf(System.currentTimeMillis());

                create(newtable,"cf");
                    insert(newtable,name);
            }catch (Exception e) {
                e.printStackTrace();
            }
        }

因为做毕设才接触的hadoop、hbase什么的,现在还是新手,遇到问题感觉完全无从下手,感谢啦!~~~
yuwenge 发表于 2015-4-23 16:54:48
ashiny 发表于 2015-4-23 16:43
已经参照这两篇改了一下,不过还是一样的报错,而且代码单独运行是可以的,在main函数里直接调用也是可 ...

条用了其他类,记得让开发环境和集群环境保持一致。
自己添加的第三方类,或则jar包,确保都能够引用到。
ashiny 发表于 2015-4-23 16:43:14
yuwenge 发表于 2015-4-23 16:14
楼主的代码有些小问题

参考这两篇吧


已经参照这两篇改了一下,不过还是一样的报错,而且代码单独运行是可以的,在main函数里直接调用也是可以的,但是我这里用了一个JNotify的Listener类,再调用时就出问题了。
而且我单步调试了一下,貌似问题出现在admin = new HBaseAdmin(cnf);这一句,执行完这一句就直接转到catch (IOException e) {e.printStackTrace();}了。
不知道您知不知道这是什么问题?谢啦~~
yuwenge 发表于 2015-4-23 16:14:48
关闭

推荐上一条 /2 下一条