使用hbase/hadoop/storm

sauutmhj  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(328)

我收到一个输入文件,其中有200毫米的记录。这些唱片只是一把钥匙。对于这个文件中的每个记录(我称之为sample\u文件),我需要从一个数据库(我称之为event\u数据库)中检索匹配键的所有记录。事件数据库可以有数十亿条记录。
例如:

  1. SAMPLE_FILE
  2. 1234
  3. 2345
  4. 3456
  5. EVENT_DATABASE
  6. 2345 - content C - 1
  7. 1234 - content A - 3
  8. 1234 - content B - 5
  9. 4567 - content D - 7
  10. 1234 - content K - 7
  11. 1234 - content J - 2

因此,系统将遍历sample_记录中的每个记录,并获取具有相同密钥的所有事件。例如,获取1234并查询事件\数据库将检索:

  1. 1234 - content A - 3
  2. 1234 - content B - 5
  3. 1234 - content K - 7
  4. 1234 - content J - 2

然后我将使用结果集执行一些计算。例如,count,sum,mean

  1. F1 = 4 (count)
  2. F2 = 17 (sum(3+5+7+2))

我将处理使用hbase存储事件\数据库的问题。然后我将运行map reduce作业,在map阶段我将查询hbase,获取事件并执行计算。这个过程可以是批量的。没有必要是实时的。
有人建议另一种建筑吗?我真的需要Map缩小工作吗?我能用另一种方法吗?

yk9xbfzb

yk9xbfzb1#

我亲自使用mapreduce、hdfs和hbase解决了这类问题。您的方法似乎很适合实现您的用例,我猜您将把计算存储回hbase。
storm也可以用来实现相同的用例,但是storm真正的亮点是流数据&接近实时的处理,而不是静止的数据。

mpbci0fu

mpbci0fu2#

您实际上不需要为每个事件都查询hbase。我认为这是一个更好的方法。
使用输入文件在配置单元中创建外部表。
使用配置单元hbase集成在配置单元中为hbase表创建外部表(https://cwiki.apache.org/confluence/display/hive/hbaseintegration)
对这两个表执行一个连接,并获取检索结果的结果。
如果您只查询输入文件的一个子集,那么您的方法会很好,但是由于您要查询hbase中的所有recrods(20m),因此使用join会更有效。

相关问题