Java 插入HBase读取卡夫卡消息

Java 插入HBase读取卡夫卡消息,java,kafka-consumer-api,apache-kafka,Java,Kafka Consumer Api,Apache Kafka,我对卡夫卡+Hbase很陌生。谢谢你的帮助 我们得到了一个Kafka消息流,希望将数据插入到从Kafka读取的Hbase中 我已经编写了一个java使用者(单主题、单分区和一个线程)来读取主题中的消息。一切都很好。在线程中,我正在尝试连接Hbase以将消息插入不起作用的表中。当它试图连接到hbase(创建HTable实例)时,读取流的kafka线程就被杀死了。如何克服这一问题,将数据插入Hbase?非常感谢您在这个问题上的想法和帮助 卡夫卡高级消费代码 public void run(){ Co

我对卡夫卡+Hbase很陌生。谢谢你的帮助

我们得到了一个Kafka消息流,希望将数据插入到从Kafka读取的Hbase中

我已经编写了一个java使用者(单主题、单分区和一个线程)来读取主题中的消息。一切都很好。在线程中,我正在尝试连接Hbase以将消息插入不起作用的表中。当它试图连接到hbase(创建HTable实例)时,读取流的kafka线程就被杀死了。如何克服这一问题,将数据插入Hbase?非常感谢您在这个问题上的想法和帮助

卡夫卡高级消费代码
public void run(){
ConsumerIterator it=m_stream.iterator();
while(it.hasNext())
//阅读信息
System.out.println(“Thread”+m_threadNumber+”:“+新字符串(it.next().message());
//加载到HBase中
//实例化配置类
Configuration config=HBaseConfiguration.create();
config.clear();
//config.set(“hbase.zookeeper.quorum”、“localhost”);
//config.set(“hbase.zookeeper.property.clientPort”、“2181”);
config.set(“hbase.zookeeper.quorum”、“localhost”);
config.set(“hbase.zookeeper.property.clientPort”、“2181”);
config.set(“hbase.master”、“localhost”);
//实例化HTable类
HTable HTable=新的HTable(配置,“设备”);
//实例化Put类
//接受行名称。
Put p=新的Put(字节数。toBytes(“id14”);
//使用add()方法添加值
//接受列族名称、限定符/行名称、值
p、 添加(Bytes.toBytes(“d_name”)、Bytes.toBytes(“primary”)、Bytes.toBytes(“ios”);
//将put实例保存到HTable。
hTable.put(p);
//关闭HTable
hTable.close();

}为什么要在代码中的config对象中设置属性?应用程序类路径中应该有hbase-site.xml属性文件。我想这就是问题所在。谢谢。我通过创建一个单独的线程来管理hbase连接,并将该类作为一个单例进行管理,从而解决了这个问题。@Suri,请将您所做的作为答案发布。为什么要在代码中的config object中设置属性?应用程序类路径中应该有hbase-site.xml属性文件。我想这就是问题所在。谢谢。我通过创建一个单独的线程来管理hbase连接,并将该类作为一个单例进行管理,从而解决了这个问题。@Suri,请将您所做的作为答案发布。
public void run() {
    ConsumerIterator<byte[], byte[]> it = m_stream.iterator();
    while (it.hasNext())

        // Read Message
        System.out.println("Thread " + m_threadNumber + ": " + new String(it.next().message()));       

            //Load into HBase           
            // Instantiating Configuration class
            Configuration config = HBaseConfiguration.create();
            config.clear();
            //config.set("hbase.zookeeper.quorum", "localhost");
            //config.set("hbase.zookeeper.property.clientPort","2181");


            config.set("hbase.zookeeper.quorum", "localhost");
            config.set("hbase.zookeeper.property.clientPort","2181");
            config.set("hbase.master", "localhost");

            // Instantiating HTable class
            HTable hTable = new HTable(config, "device");

            // Instantiating Put class
            // accepts a row name.
            Put p = new Put(Bytes.toBytes("id14")); 

            // adding values using add() method
            // accepts column family name, qualifier/row name ,value
            p.add(Bytes.toBytes("d_name"), Bytes.toBytes("primary"),Bytes.toBytes("ios"));


            // Saving the put Instance to the HTable.
            hTable.put(p);


            // closing HTable
            hTable.close();