有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

  • MemSQL管道
  • MemSQL加载程序(无润滑)

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

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

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

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

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

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

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