Rockset数据摄取/上传

时间:2019-01-16 00:40:22

标签: json xml api indexing rockset

使用Rockset分析驻留在S3上的xml和json数据非常有用。但是是否想知道是否有一种方法可以通过Rockset API将xml或json文档作为一个整体加载(作为字符串)?

例如:假设我正在运行一个本地应用程序,该应用程序暴露了挂钩以与外部系统(在本例中为Rockset)建立接口,因此我想从我的系统中使用Rockset API(最好是REST或Java)以发送整个xml或json文档,然后在Rockset中对其进行解析和索引编制,就像该文档是从s3中提取的一样。

我手头的另一个问题是管理对已经上传到Rockset Collection的文档的更改。我应该先删除旧文档,然后上传新文档还是直接进行更新?

1 个答案:

答案 0 :(得分:1)

  

但是想知道是否有一种方法可以通过Rockset API将xml或json文档作为一个整体加载吗?

这可以使用Rockset的upload API endpoint完成。如果您希望通过Java进行此操作,则可以使用此sample来构建它。它使用上面指定的端点将文件上传到集合。

rock upload中,该端点还有一个脚本化版本作为子命令公开,因此,如果使用rock CLI,则应该能够执行以下操作:

rock upload <collection-name> <path/to/local/file>

还可以使用REST API和命令行来提取可以从S3提取的所有文件类型。上传端点通常适合大型文件(通常大于10M)。如果您当时具有流数据和JSON,则还可以使用Rockset的流Write API进行编写。我上面链接的文档中有一些片段,介绍了如何使用流式API将不同编程语言的文档写入Rockset集合。


  

我手头的另一个问题是管理对已经上传到Rockset Collection的文档的更改。我应该先删除旧文档,然后上传新文档还是直接进行更新?

理想情况下,您将在文档上设置一个_id字段。 _idspecial field,并且对于集合中的每个文档都是唯一的。如果要使用集合中已经存在的_id编写文档,它将覆盖旧文档中的字段。这是一种比删除和回写更有效的更新方式。


  

如果我们经常(每天,每小时或每分钟)将数据上传到我的s3存储桶,那么将其添加到现有Rockset集合的最佳方法是什么?

默认情况下,Rockset支持从S3实时提取。因此,一旦在Rockset中设置了存储区和前缀,它将不断扫描基础存储区以在新文档出现时提取它们。因此,如果您适当地设置S3源,它可以在新文档到达时继续用新文档更新收藏集。