当前位置: 首页 > 知识库问答 >
问题:

从Storm bolt将行插入HBase

吕奇
2023-03-14

我希望能够从分布式(而不是本地)Storm拓扑编写新的条目到HBase。有几个GitHub项目提供HBase映射器或预制的Storm bolts来将元组写入HBase。这些项目提供了在LocalCluster上执行其示例的说明。

我在这两个项目中遇到的问题,以及从bolt直接访问HBase API,是它们都需要在类路径中包含hbase-site.xml文件。使用直接API方法,或许也使用GitHub方法,当您执行HBaseConfiguration.create();时,它将尝试从类路径上的条目中查找所需的信息。

如何修改storm bolts的类路径以包含Hbase配置文件?

更新:使用DaneHammer的答案,这就是我如何使它工作

将以下文件复制到您的~/.storm目录中:

    null
final Configuration hbaseConfig = HBaseConfiguration.create();
final DataOutputBuffer databufHbaseConfig = new DataOutputBuffer();
hbaseConfig.write(databufHbaseConfig);
final byte[] baHbaseConfigSerialized = databufHbaseConfig.getData();
Configuration hBaseConfiguration = new Configuration();
ByteArrayInputStream bas = new ByteArrayInputStream(baHbaseConfigSerialized);
hBaseConfiguration.readFields(new DataInputStream(bas));
HTable tbl = new HTable(hBaseConfiguration, HBASE_TABLE_NAME);

Scan scan = new Scan();
scan.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("YOUR_COLUMN"));

scnrTbl = tbl.getScanner(scan);
Result rsltWaveform = scnrWaveformTbl.next();

共有1个答案

章兴发
2023-03-14

当您使用“storm jar”命令部署拓扑时,~/.storm文件夹将位于类路径上(请参阅jar命令下的此链接)。如果您将hbase-site.xml文件(或相关的*-site.xml文件)放置在该文件夹中,hbaseConfiguration.create()将在“Storm Jar”期间找到该文件并正确地返回org.apache.hadoop.configuration.configuration。这需要在拓扑中存储和序列化,以便在集群中分发配置。

 类似资料:
  • 问题内容: 我有一张表格,列出了来自特定网站的评论数量,如下所示: 我还有另一个表,列出了所有站点,例如从1到10 使用以下代码,我可以找出上个月缺少哪些站点条目: 生产: 我希望能够使用一些默认值(即“ 0”)将查询中列出的缺失网站插入到注释表中 问题是,我如何更新/插入表/值? 干杯, 背风处 问题答案:

  • 问题内容: 我正在尝试将JTable中的多行数据保存到数据库中,这是我的代码供参考: 问题是,它仅将一行数据插入数据库。有人可以帮帮我吗?:( 谢谢! 问题答案: 从循环中删除以下行代码并将其放置在循环之前 示例: 用以下代码替换您的代码 然后运行它认为它起作用。 对于批量插入示例,请参见https://my.vertica.com/docs/5.0/HTML/Master/14878.htm

  • 问题内容: 我从终端创建了一个表,然后尝试创建简单的任务:从表单中插入值。这是我的 这是我的。 按下我的保存按钮后,什么也没有发生,数据库仍然为空。我尝试了查询,它按照预期的方式从表单中获取所有值。在尝试从终端检查是否可以正常工作后,我登录到尝试从users表返回所有数据的操作,但得到了空集。 问题答案: 以下代码仅声明了一个包含MySQL查询的字符串变量: 它不执行查询。为此,您需要使用一些功能

  • 问题内容: 我从终端创建了一个表,然后尝试创建简单的任务:从表单中插入值。这是我的 这是我的。 按下我的保存按钮后,什么也没有发生,数据库仍然为空。我尝试了查询,当它被认为它从形式的所有值。在尝试从终端检查是否可以正常工作后,我登录到尝试从用户表返回所有数据的操作,但得到了空集。 问题答案: 以下代码仅声明了一个包含MySQL查询的字符串变量: 它不执行查询。为此,您需要使用一些功能,但让我先解释

  • 问题内容: 我正在使用PHP中的mvc结构,我想检索最后插入的行ID。 我创建了以下sql代码: 但不幸的是我遇到了这个错误: 我也尝试过此堆栈链接,但不适用于我,因此如果您能帮助我获取ID,我将非常高兴。 我也在这里共享我的controller.php文件。 问题答案: 你快到了。 如果您查看lastInsertId的手册页,则会在数据库句柄上调用它- 您当前正在语句中对其进行调用。 您只需要致

  • 问题内容: 我一直在看这段代码已有一段时间了,但我看不出问题出在哪里。我已经阅读了整个StackOverflow,但仍然看不到我的错误在哪里。 错误在第13行中,即thats 。我尝试通过http://www.w3schools.com/php/php_mysql_insert.asp帮助自己,但对我没有太大帮助。 问题答案: 警告: 切勿将 w3schools 用于学习目的。他们的教程中有很多错