2

私はPython、PyTables、HDF5の初心者です。私は自分の問題に対するシンプルで最良の解決策を探しています。

次は問題です。一方では、データを含む多くのXMLファイルがあります。これらのファイルを解析して、反対側のhdf5ファイルにデータを入れたいだけです。後で、このデータをいくつかの検索条件で使用します。なぜHDF5なのですか?大きなデータセットを配置する必要があるため、そして速度のため。RDBMSを使用すると、JOIN操作中のパフォーマンスに問題が発生します。ソリューションは、速度と優れたメモリパフォーマンスを提供する必要があります。

いくつかのグーグルの後、私はPythonとPyTablesを可能な解決策として見つけました。私の考えは、JavaでXMLからデータを解析し(このコードはJavaで作成する必要があります)、その後、PyTables APIを使用してhdf5にデータを挿入し、JavaからPythonスクリプトを実行するPythonスクリプトを作成します。だから、私はJavaプログラムからPythonスクリプトを書いて実行しています。JavaでPythonスクリプトを作成するために、java.io。*パッケージを使用し、JavaでProcessクラスを実行します。例えば:

p.exec( "cmd / c C:\ MyScripts \ myscript.py")

この解決策が良いかどうかはわかりません。私にとって、java.io。*を使用してJavaからスクリプトを書くのはクールではありません。おそらく、後でスクリプトから結果を読み取る際に問題が発生します(PythonスクリプトとPyTables APIを使用して検索条件を作成する場合)。

ですから、私の問題についていくつか質問があります。一方の側でXMLデータを解析し、もう一方の側でデータをhdf5に保存するための最良の解決策は何ですか?私はこのソリューション(JavaコードからPythonスクリプトを記述して実行する)で正しい方向に進んでいますか?PythonとPyTablesはどうですか?これらのテクノロジーは私の問題の良い解決策ですか?また、Jythonに関するいくつかのことを読みましたが、PyTablesと組み合わせることが可能かどうかわかりません。

専門家からの意見やアドバイスは大歓迎です。助けてくれてありがとう。

4

2 に答える 2

3

私にとっては、を使用してJavaからスクリプトを書くのはクールではありませんjava.io.*

ここでも同じです。XMLからのデータをJavaの内部表現に解析し、このデータをPythonスクリプトに再書き込みすると、Pythonインタープリターがデータを内部表現に再解析して書き込みを行います。 HDF5ファイルに。これは、Java XML解析インターフェース、XMLデータ形式、およびHDF5ファイルを操作するためのPython APIの両方を結合します。これは、本来あるべきよりも多くの可動部分のように聞こえます。(名前を変更したPythonパッケージを更新するためだけにブレークアウトしたいですか?)javac

もう一歩後退して、問題の2つのステップを見る価値があると思います。

  • XMLを解析する
  • HDF5を書く

それらの間に2つの言語が必要な理由はありません-私は完全にJavaに固執するか、完全にPythonに固執します。最終結果は、より多くのシステムでより少ないメモリでより高速に実行され、選択した言語に関係なく、より保守しやすくなります。

于 2012-01-18T02:23:27.383 に答える
2

私はプロジェクトに取り組み、約60 000個のPythoncPickleファイルを解析し、その内容(約31k行と4列のマトリックス)を別々のPyTablesテーブルに配置しました。それは動作し、本当にうまく機能します。

しかし、私はサーノルドに同意します。私はあなたが最も経験があり、最も快適なものなら何でも、JavaかPythonのどちらかに固執するでしょう。特にインポートスクリプトを作成する場合は、Pythonとpytablesを使用した方が結果を取得しやすいと思います。

ところで、JavaからPythonスクリプトを実行したい理由は何ですか?Pythonスクリプトを直接実行してみませんか?

ところで、PyTablesよりも低レベルのpythonh5pyパッケージもあります。PyTablesは、実際にはHDF5の上に追加の抽象化レイヤーを構築します。たとえば、PyTablesには、RDBMSのテーブルに似たテーブルの概念があり、インデックスをサポートします(どちらも、すぐに使用できるHDF5ではサポートされていません)。

理論的には、JavaのPyTablesで作成されたHDF5ファイルを読み取ることができます。ただし、テーブルやインデックスなどのすべてのPyTable機能をすぐにサポートできるわけではありません。
これに加えて、 PyTablesでBlosc圧縮アルゴリズムを使用すると、Javaでまったくロードできない場合があります。

于 2012-01-18T20:20:39.697 に答える