web-dev-qa-db-ja.com

古いJavaアプリとネットワーク上のpythonアプリとの間で大きなデータセットを転送するための最良の方法は何ですか?

現在、機械学習プロジェクトに取り組んでいます。古いJavaアプリ(現在のパラダイムのデータの管理者でもあります)からpythonにデータを転送する必要があります。 _機械学習に関連するすべてのことを行うサービス。したがって、ネットワークを流れる必要がある数GBのデータが揃っています。

そのデータを転送する最も効率的な方法は何でしょうか?

この情報は役に立つかもしれません-

  1. Javaアプリケーションは3層のAWSインスタンスとしてデプロイされ、エラスティック検索、postgres、neo4jを使用します。
  2. pythonアプリケーションは、別のAWSインスタンスにデプロイされます。
  3. データはNeo4Jに存在し、現在エンコードされていませんが、CSVに書き込んだり、オブジェクトに変換したりできます。

助けていただければ幸いです!前もって感謝します!

2
Uttakarsh Tikku

これはApache Kafka(またはApache Flink)などのストリーム処理パイプラインを使用する完璧な例と考えています。

それらを使用する根拠は、可能な限り多くのプロデューサー(Javaアプリ)またはコンシューマー(Pythonアプリ)を追加できることです。また、Kafkaがバッファリングするため、速度が異なる場合でも心配する必要はありません。

データをKafkaに渡す前に、データをシリアル化する必要がある場合があります(ASCIIでない場合)。そのためには、JSONを使用することもできます(または、Apache Avroこれにより、データを簡単に分割できます)。

0
Vicente Bolea

両方のアプリに同じデータベースからの読み取りを許可しないのはなぜですか?あるいは、それができない場合は、一方のアプリでS3にデータを書き込み、もう一方のアプリでS3からデータを読み取ることができます。ターゲットアプリは、書き込まれるすべてのファイルについてS3のイベントをリッスンして、それをロードするだけです。

多分それを単純化しすぎているかもしれませんが、それは簡単に思えます...(?)

Snowpipeと呼ばれるテクノロジーを使用してAWSに接続できるSnowflake SQL www.snowflake.comもあります。これは、基本的にAWSのリソースに書き込み、それをSnowflake DBにロードします(ただし、この場合はおそらくやりすぎです) )。

1
Niklas