0

我正在使用一项 3rd 方服务,它聚合数据并公开 REST API 以访问它。

我现在正在尝试获取这些数据并将其加载到我们的本地 HBase 集群上。我创建了一个 java 应用程序,它从该 3rd 方服务中获取数据,对其进行处理并使用 HBase 客户端 API 将其加载到我们的集群上。对于这个应用程序,我必须手动运行它,并且不确定有多少 HBase 客户端 API 可以有效地加载批量数据。

我遇到了 Sqoop 和 Cascading-dbmigrate 从 RDBMS 进行批量传输。我的问题是:是否有任何类似的工具可以从 REST API 进行批量数据传输?另外,定期同步数据。

感谢 ArunDhaJ http://arundhaj.com

4

1 回答 1

3

REST API 不像 RDBMS 那样标准化,据我所知,没有工具可以神奇地从您的 API 加载到 HBase,您必须围绕它构建一些东西。对于这种对 HBase 的重载,一个好的做法是使用 HBase 批量加载,这将比简单地使用 HBase API 使用更少的 CPU 和网络资源。这可以通过几个步骤完成:

  1. 使用HFileOutputFormatas使用 Map/Reduce 作业准备数据OutputFormat。这可确保您的作业输出被编写为HFile,这是一种非常有效的加载到 HBase 的格式。你可以这样做:

    job.setOutputFormatClass(HFileOutputFormat.class);
    HFileOutputFormat.setOutputPath(job, path);
    
  2. 使用命令行工具加载数据,该工具completebulkload会处理所有事情,因此您甚至无需担心区域服务器。这可以像这样手动完成:

    hadoop jar hbase-VERSION.jar completebulkload [-c /path/to/hbase/config/hbase-site.xml] /user/todd/myoutput mytable
    

    我相信如果您使用此步骤会自动运行,HFileOutputFormat因此您甚至可能不需要自己执行此步骤。

有关此过程的更多详细信息

将所有内容联系在一起所需要做的只是编写一个程序,该程序将从您的 API 获取数据并加载到 HDFS 中。

于 2013-01-17T05:10:31.593 回答