問題タブ [pytables]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1927 参照

postgresql - Pytablesを使用したHDF5の書き込み速度の最適化

問題は、コンピューター(10 * 32ビットマシン)の書き込み速度とpostgresqlクエリのパフォーマンスにあります。シナリオについて詳しく説明します。

私は約80Gbのデータを持っています(適切なデータベースインデックスが用意されています)。Postgresqlデータベースから読み取り、Pytablesを使用してHDF5に書き込もうとしています.1つのhdf5ファイルに1つのテーブルと5つの変数配列があります.Hdf5の実装はマルチスレッド化されておらず、対称型マルチプロセッシングが有効になっていません.約10台のコンピューターをレンタルしました私のデータ処理をスピードアップするために1日そしてそれらを書き込もうとしています。

postgresqlテーブルに関しては、全体のレコードサイズは1億4000万であり、5つの主外部キー参照テーブルがあります。スケーラブルではないため、結合を使用していません。

したがって、単一のルックアップの場合、結合なしで6つのルックアップを実行し、hdf5形式で書き込みます。ルックアップごとに、テーブルとそれに対応する配列のそれぞれに6つの挿入を行います。

クエリは本当に簡単です

(同様に5つのクエリ)

各コンピューターは2つのhdf5ファイルを書き込むため、合計数は約20ファイルになります。

いくつかの計算と統計:

現在のPostgresqlデータベース構成:

私の現在のマシン:i7第2世代プロセッサーを搭載した8GBRAM。

postgresql構成ファイルに次の変更を加えました:shared_buffers:2 GBeffective_cache_size:4 GB

現在のパフォーマンスに関する注意:

10時間実行しましたが、パフォーマンスは次のとおりです。各ファイルに書き込まれるレコードの総数は約6,21,000 * 5=31,05,000です。

ボトルネックは、1日10時間(一晩)しかレンタルできないことです。この速度で処理する場合、約11日かかりますが、これは私の実験には高すぎます。

改善方法を教えてください。質問:1。これらのデスクトップで対称型マルチプロセッシングを使用する必要があります(2つのコアと約2 GBのRAMがあります)。その場合、何が提案または推奨されますか?2. postgresql構成ファイルを変更してRAMを増やすと、プロセスが強化されます。3.マルチスレッドを使用する必要があります。その場合、リンクやポインタは非常に役立ちます。

ありがとうSreeaurovindhV

0 投票する
3 に答える
2225 参照

python - pytablesの「テーブルから最大(列)を選択」に相当するものは何ですか

大量の数値を含むテーブルがあります。列を抽出して max() を実行できることはわかっていますが、おそらくカーネル内メソッドを使用してこれを行う方法があります。しかし、それを見つけることができないようです。

0 投票する
0 に答える
196 参照

python - PyTables が欠落していると言い、VITables をインストールするのを妨げた

PyTables は、Windows にVITablesをインストールするための要件の 1 つです。Table.test でインストールを確認しましたが、すべて問題ないようです。テストは次を返します。


tables.test()
PyTables バージョン: 2.3.1
HDF5 バージョン: 1.8.8
NumPy バージョン: 1.6.1
Numexpr バージョン: 1.4.1 (Intel の VML/MKL を使用しない)
Zlib バージョン: 1.2.3 (Python インタープリターで)
LZO バージョン: 2.04 (2010 年 10 月 31 日)
BZIP2 バージョン: 1.0.6 (2010 年 9 月 6 日)
Blosc バージョン: 1.1.2 (2010-11-04)
Python バージョン: 2.7.2 (デフォルト、2011 年 6 月 12 日 15:08: 59) [MSC v.1500 32 ビット (インテル)]
バイトオーダリング: 少ない
検出されたコア: 4

260.580 秒で 4729 のテストを実行

わかった


ただし、VITables のインストールは、「PYTables がインストールされていないようです。VITables のインストール プロセスを中止しています。」というメッセージで失敗し続けます。

これを修正する方法はありますか?

どうも。L.

0 投票する
1 に答える
4032 参照

python - Windows で Python 2.5 を使用する Pytables 2.3.1: エラー - ローカルの hdf5 インストールが見つかりませんでした

Python 2.5 を使用して Windows XP に PyTables 2.3.1 をインストールしようとしています。次のエラーが表示されます。

HDF5 ライブラリのインストールに少し混乱しています。HDF5 サイトHDF5188-win32-shared.zipから呼び出された Windows バイナリをダウンロードし、zip アーカイブ内の .exe ファイルを実行しました。このフォルダに HDF5 ライブラリがインストールされているように見えます。

このフォルダーを指す HDF5_DIR という環境変数を作成しようとしましたが、それでもうまくいきません。私は明らかに HDF5 ライブラリの適切な部分をインストールしていませんが、代わりに何をすべきかわかりません。

誰か提案はありますか?

ありがとう!

0 投票する
1 に答える
257 参照

pytables - pytables-リスト内のデータの取得を高速化する方法

次の形式で約100万行を返すクエリがあります。

そしてそれは5分以上かかっています。

私が単独で試しtbl.where(conditions)たとき、クエリは1秒もかからなかったので、ほとんどの時間はリスト内包表記の行を反復処理するのに費やされたようです。

クエリからfield1/field2を取得するより高速な方法はありますか?(結果をメモリに保存するのに十分なRAMがあります)

0 投票する
1 に答える
1181 参照

python - Numpy 一時配列のデータベースまたはテーブル ソリューション

ユーザーがさまざまな分布形式を選択して農業生産量データをモデル化できるようにする Python デスクトップ アプリケーションを作成しています。私は時系列の農業データ (100 万行近く) を SQLite データベースに保存しています (ただし、誰かがより良い選択を知っている場合、これは確定していません)。イリノイ州で 1990 年から 2010 年までのトウモロコシの収量など、ユーザーがデータを選択したら、ドロップダウンから分布形式を選択してもらいます。次に、私の関数は分布をデータに当てはめ、その当てはめられた分布形式から引き出された 10,000 ポイントを Numpy 配列で出力します。このデータは、プログラムの実行中に一時的なものにしたいと考えています。

効率的にするために、指定された地域と分布に対して、これを適合させ、その後の数値の描画を 1 回だけ行いたいと思います。私は Python で一時ファイルを調査してきましたが、多くの異なる Numpy 配列を保存するための最良の方法であるかどうかはわかりません。PyTables も興味深いアプローチのようで、Numpy と互換性があるようですが、一時データの処理に適しているかどうかはわかりません。最近では、MongoDB のような SQL ソリューションも非常に人気があるようには見えません。これは、履歴書作成の観点からも興味深いものです。

編集: 以下のコメントを読んで調査した後、PyTables を使用する予定ですが、これに取り組むための最良の方法を見つけようとしています。以下のようなテーブルを作成することは可能ですか? Float32Col の代わりに scikits 時系列クラスの createTimeSeriesTable() を使用できますか?下の Float32Col はデータを保持します。または、この問題に対処するためのより良い方法はありますか?

この問題に関するヘルプは大歓迎です。

0 投票する
1 に答える
101 参照

python - ビットベースの値のクエリ

pytables から値を取得する方法に問題があります。値はビット ベースですが、整数として格納されます。

私のテーブルの1つの列はInt32Column()name'Value'です。この列には、すべてのビットが異なる意味を持つ整数値を格納します。したがって、あるビットの情報が必要な場合は、テーブルから値を取得し、ビット操作アクションを実行します。テーブルから指定された値を取得するためのクエリを作成する方法がわかりません。

たとえば、Value最初のビット == 1 と 3 番目のビット ==1 である列のすべての値を知りたいとします。

そのクエリを作成する方法は?私はマスクを試しています:

しかし、私は例外を取得しています:

今後大量の行が発生するため、クエリの処理は非常に高速である必要があります。制限の 1 つは、サーバーから int 形式で値を取得しているため、値はテーブル内の int 値でなければならないということです。誰かがより良い解決策を持っていることを願っています。

0 投票する
0 に答える
969 参照

python - Pytables のインストール、HDF5 インストールの検索エラー

Windows7 に Pytables をインストールしようとしていますが、必要な環境変数をセットアップしたにもかかわらず、次のエラーが発生し続けます。

これを処理するより良い方法はありますか?

0 投票する
1 に答える
461 参照

numpy - PyTablesの既存のHDF5ファイルにNumPy配列を追加しますか?

2つのスライスされたNumpy配列、たとえばaとb、形状1 * 480 * 640をメモリに保存していますが、PyTablesの既存のHDF5ファイルにそれらを追加するにはどうすればよいですか?既存のHDF5ファイルには3つの配列n1、n2、n3があります。新しいHDF5ファイルに5つの配列n1、n2、n3、a、bが必要です。どうも!

0 投票する
1 に答える
1098 参照

python - Pytables - いくつかの基準でテーブルから行を削除する

Time32 列と多数の行を持つテーブルが 1 つあります。私の問題は次です。

テーブルが数千万行に達したら、指定した値よりも古いすべての行のアーカイブを開始したいと考えています。クエリを作成するには、行で収集されたデータのタイムスタンプを表す Time32 列を使用します。したがって、このクエリを使用して、作業テーブルの古い行を削除し、アーカイブ レコードを格納するために予約されている別のテーブルに格納します。出来ますか?はいの場合、最も効率的な方法は何ですか?

whereAppend() メソッドについては知っていますが、このメソッドはレコードをコピーするだけで、実際のテーブルからは削除しません。アドバイスありがとうございます。乾杯!