以编程方式将数据从 S3 或 Azure 加载到 MemSQL 中的最佳方式是什么?



我必须将数据(以 CSV 或 TSV 的形式)从 Amazon S3 存储桶中的某个路径加载到一些 MemSQL 表中。将来可能需要从 Azure Blob 存储加载数据。我知道有两种方法可以做到这一点:

  • MemSQL 管道
  • MemSQL Loader (已弃用)

以下是需要考虑的两种方法的优缺点:

  • MemSQL管道 - 如果我们手动创建管道,那么它将自动继续执行该工作。但是,使管道始终处于运行状态将浪费系统资源 (RAM)。此外,包含要在 MemSQL 中加载的数据的新文件将仅在一天中的特定时间(通过某些 cron 作业)添加到 S3 中。因此,如果管道不存在,我想以编程方式创建管道(使用 JDBC),启动管道,然后在成功加载所有数据后停止它(如果在此过程中处理错误),还要处理错误)。此过程将作为每日 cron 作业运行。 但是,我找不到任何方法可以知道所有数据是否已同步。我也找不到任何好方法来知道过程中是否发生了任何错误。

  • MemSQL加载程序 - MemSQL 加载程序在完成加载所需数据后会发送状态。因此,我可以在 cron 作业中执行上述工作。但是,由于MemSQL加载程序现已弃用,因此我不想使用它。

请建议将数据加载到 MemSQL 表的最佳方式。另外,如果还有其他方法可以做同样的事情,请告诉我(除了管道和加载器)。

提前谢谢。

MemSQL Pipelines非常适合您的工作负载。如前所述,S3 和 Azure 管道将在新文件可用时自动加载新文件。当管道不加载数据时,除了极少量的元数据外,它不会使用系统资源。这是专门设计的,因此您无需手动设置 chron 作业即可加载数据。如有必要,您还可以通过STOP PIPELINE命令停止加载新文件。

information_schema数据库中有一些表,可让您查看所有管道的状态以及已命中的所有错误。具体而言,您可能希望查询PIPELINES_ERRORS表以获取错误。

最新更新