Java 将数据从API加载到HBase

Java 将数据从API加载到HBase,java,hadoop,hbase,bigdata,sqoop,Java,Hadoop,Hbase,Bigdata,Sqoop,我正在使用一个第三方服务,它聚合数据并公开RESTAPI来访问数据 我现在正试图获取这些数据并将其加载到本地HBase集群中。我创建了一个java应用程序,它从第三方服务获取数据,处理数据并使用HBase客户端API将其加载到我们的集群中。对于这个应用程序,我必须手动运行它,并且不确定有多少HBase客户端API能够有效地加载批量数据 我遇到了Sqoop和级联dbmigrate来从RDBMS进行批量传输。我的问题是:有没有类似的工具可以从RESTAPI进行批量数据传输?此外,还可以在固定的时间段

我正在使用一个第三方服务,它聚合数据并公开RESTAPI来访问数据

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

我遇到了Sqoop和级联dbmigrate来从RDBMS进行批量传输。我的问题是:有没有类似的工具可以从RESTAPI进行批量数据传输?此外,还可以在固定的时间段内同步数据

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

  • 使用
    HFileOutputFormat
    作为
    OutputFormat
    使用Map/Reduce作业准备数据。这可以确保作业输出以非常有效的格式写入HBase。你可以这样做:

    job.setOutputFormatClass(HFileOutputFormat.class);
    HFileOutputFormat.setOutputPath(job, path);
    
    hadoop jar hbase-VERSION.jar completebulkload [-c /path/to/hbase/config/hbase-site.xml] /user/todd/myoutput mytable
    
  • 使用命令行工具
    completebulkload
    加载数据,它会处理所有事情,因此您甚至不需要担心区域服务器。这可以通过如下方式手动完成:

    job.setOutputFormatClass(HFileOutputFormat.class);
    HFileOutputFormat.setOutputPath(job, path);
    
    hadoop jar hbase-VERSION.jar completebulkload [-c /path/to/hbase/config/hbase-site.xml] /user/todd/myoutput mytable
    
    我相信如果您使用
    HFileOutputFormat
    ,此步骤会自动运行,因此您甚至不需要自己执行此步骤

  • 有关该过程的更多详细信息


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

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

  • 使用
    HFileOutputFormat
    作为
    OutputFormat
    使用Map/Reduce作业准备数据。这可以确保作业输出以非常有效的格式写入HBase。你可以这样做:

    job.setOutputFormatClass(HFileOutputFormat.class);
    HFileOutputFormat.setOutputPath(job, path);
    
    hadoop jar hbase-VERSION.jar completebulkload [-c /path/to/hbase/config/hbase-site.xml] /user/todd/myoutput mytable
    
  • 使用命令行工具
    completebulkload
    加载数据,它会处理所有事情,因此您甚至不需要担心区域服务器。这可以通过如下方式手动完成:

    job.setOutputFormatClass(HFileOutputFormat.class);
    HFileOutputFormat.setOutputPath(job, path);
    
    hadoop jar hbase-VERSION.jar completebulkload [-c /path/to/hbase/config/hbase-site.xml] /user/todd/myoutput mytable
    
    我相信如果您使用
    HFileOutputFormat
    ,此步骤会自动运行,因此您甚至不需要自己执行此步骤

  • 有关该过程的更多详细信息


    你需要做的就是编写一个程序,从你的API中获取数据并加载到HDFS中。

    出于好奇,那么人们如何将Facebook数据(或任何类似的服务,如twitter、reddit)放到集群中并对这些数据进行分析?因为这些服务也只公开API,特别是Facebook,但在使用外部数据源时,设计一个ETL过程来提取这些数据并将其加载到集群中,然后对其执行任何操作都是非常标准的。我一直在与许多不同的来源合作,虽然获取有时可能是一个瓶颈,但它仍然是一个必要的步骤。出于好奇,那么人们如何将Facebook数据(或任何类似的服务,如twitter、reddit)放到集群上,并对这些数据进行分析?因为这些服务也只公开API,特别是Facebook,但在使用外部数据源时,设计一个ETL过程来提取这些数据并将其加载到集群中,然后对其执行任何操作都是非常标准的。我在工作中使用了许多不同的源代码来完成这项工作,虽然提取有时可能是一个瓶颈,但它仍然是一个必要的步骤。