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

标签 java jdbc amazon-s3 azure-blob-storage singlestore

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

  • MemSQL 管道
  • MemSQL 加载程序(已删除)

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

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

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

请建议将数据加载到 MemSQL 表的最佳方法。另外,请让我知道是否有其他方法可以做到这一点(除了管道和加载器)。

提前致谢。

最佳答案

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

information_schema 数据库中有一些表,可以让您查看所有管道的状​​态和所有已命中的错误。具体来说,您可能想要查询 PIPELINES_ERRORS表以获取错误。

关于java - 以编程方式将数据从 S3 或 Azure 加载到 MemSQL 的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50194454/

相关文章:

java - 检查给定文件夹中是否存在任何文件

java - Teradata JDBCexecuteBatch 错误处理

database - 与 Derby 数据库交互时我的应用程序中的 SQLNonTransientConnectionException : No current connection,

python - 使用 python、boto3 在 Amazon S3 中创建目录

spring-boot - 使用 Java 和 CloudWatch 触发器安排 AWS-Lambda

android - 哪些云数据库提供商深受简单/小型应用程序的欢迎?

Java:递归泛型编译器错误

java - 有没有比使用 CountDownLatch 更好的等待两个线程完成任务的方法?

java - 如何将 .doc 或 .docx 文件转换为 .txt

sql-server - JTDS 驱动程序不适用于 Sql Server 2008R2,且 Denali Native SSPI 库未加载。检查 java.library.path 系统属性