問題タブ [blaze]
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.
python - Python を使用したメモリより大きいデータ分析のためのフレームワークの選択
メモリより大きいデータセットの問題を解決しています。元のデータセットは .csv ファイルです。列の 1 つは、musicbrainz サービスからのトラック ID 用です。
私がすでにしたこと
.csv ファイルをdaskで読み取り、パフォーマンスを向上させるためにディスク上でcastra形式に変換しました。また、musicbrainz API にクエリを実行し、 peewee を使用して sqlite DB にいくつかの関連する結果を入力しました。プロセスに数日かかり、障害が発生した場合にデータを失いたくなかったため、別の dask.dataframe の代わりに DB を使用することにしました。
私はまだデータを実際に分析し始めていませんでした。データの再配置中になんとか十分な混乱を引き起こしました。
現在の問題
SQL DB から dask / castra データフレームに列を結合するのに苦労しています。実際、これが実行可能かどうかはわかりません。
代替アプローチ
タスクに最適なツールを選択する際にいくつかの間違いを犯したようです. カストラはおそらく十分に成熟しておらず、それが問題の一部だと思います. さらに、pandas と peewee's not で使用されているため、peewee を優先して SQLAlchemy を選択する方が良い場合があります。
Blaze + HDF5 は、dask + castra の優れた代替手段として機能する可能性があります。これは主に、HDF5 が castra よりも安定性/成熟度/完全性が高く、blaze がデータ ストレージに関する意見が少ないためです。たとえば、SQL DB のメイン データセットへの結合を簡素化できます。
一方、私は pandas に精通しており、dask は「同じ」API を公開しています。dasを使用すると、並列処理も得られます。
TL;DR
メインのデータセットに参加する必要がある、メモリ データセット + sqlite DB よりも大きなデータセットがあります。dask + castra (dask.dataframe に関連する他のデータ ストアがわからない) を使用し、SQLAlchemy を使用して SQL DB の一部を一度に pandas のデータフレームにロードするかどうかは疑問です。私が考える最良の代替案は、代わりにブレイズ + HDF5 に切り替えることです。この場合、あなたは何を提案しますか?
その他のオプション/意見は大歓迎です。これがSOにとって十分に具体的であることを願っています。
python - odo を使用してデータを SQL に移行する
3 GB の大きな CSV ファイルがあり、Blaze を使用してデータを調査し、分析に関心のあるデータまで選択し、最終的な目標として、そのデータを SQlite などの適切な計算バックエンドに移行したいと考えています。 、PostgresSQLなど。そのデータをBlazeに取り込んで問題なく作業できますが、これは私が問題を抱えている部分です:
sqlite で開く db ファイルを適切に作成する方法がわかりません。
python - sqlite バックエンドで python blaze にユーザー定義関数を提供するにはどうすればよいですか?
すべて正常に動作する Blaze で sqlite データベースに接続します
df = bz.Data("sqlite:///<mydatabase>)
が、df とのやり取りでユーザー定義関数を提供する方法がわかりません。IPアドレスを含むテキストであるdfにIPという列があります。また、IP アドレス (x) をテキスト形式で受け取り、その /y サブネットを返す関数 toSubnet (x, y) もあります。例えば:
すべての IP を /14 サブネットにマップする場合は、次を使用します。
バックエンドが CSV の場合に機能します。しかし、sqlite バックエンドではNotImplementedError. ここで何が問題なのですか?
postgresql - Blaze/Pandas で処理するための UNICODED テキストの効率的な保存
約 500 万行 (および増加中) の Twitter フィードがあり、Pandas (できればBlaze ) を使用して読み取り/書き込みアクセスを高速化するために、それらを効率的に保存したいと考えています。1 つのツイートの膨大なメタデータから、[username, tweet time, tweet & tweet ID]. それほど多くはありません。また、ツイートはすべてunicode暗号化されています。このデータを保存する最良の方法は何ですか? 私は現在、それらを一連の CSV に保存していますが、データが大きくなるため実行可能なソリューションとは思えないため、DB に移動する予定です。私は最初に HDF5 について考えましたが、Unicode 列の保存にはまだ問題があります (Python 3 でも)。
Blaze はデータベースに対して優れたサポートを提供しているため (分析にも優れていると思います)、私の問題に対する優れたアーキテクチャ ソリューション (可能であれば、運用レベルで) を教えてください。私のデータも構造化されているため、NoSQL ソリューションの必要性は感じていませんが、提案は受け付けています。
現在、これらの 5 MM 行は約 1 GB のスペースしか占めておらず、数十 GB を超えることはないと思います。では、 を使用Postgresするのが最善のアイデアですか?
ありがとう
postgresql - Blaze の Odo を使用してデータベースに追加する際に重複行を無視する
Blaze のOdoを使用して postgres DB にデータフレームを保存するときに、重複行を無視するにはどうすればよいですか?
たとえば、次のように最初の 3 行を保存します。
my_table主キーとして列IDを持ちます。さらにいくつか追加する場合、今回は前の最後の行を含めて、その行をスキップして、それを取得する代わりに他の行を追加しIntegrityErrorます。
どうやってやるの?IDDB に何百万もの行がある場合、DB から値をロードして重複をチェックするのはコストがかかるように思えます。より良い代替手段はありますか?このようなもの:
ブレイズ: 0.8.3、Postgres: 9.4.4、Psycopg2: 2.6.1
postgresql - Blaze で開いた DB セッションを閉じる方法
ドキュメントには、 Blaze のDataを使用して DB への接続を開く方法が記載されていました。
私は上記のようにしましたが、その後Psycopg2を介して開かれたセッションでその DB で更新操作 ( drop tableなど) を実行しようとすると、次のメッセージが表示されました。
私は Psycopg2 で開いているセッションを管理しているので、この動作は Blaze が原因であると思われます。(私が間違っている場合は、修正してください)。
たとえば、Psycopg2 で他のことを実行できるように、作業が終わったら最初にこの Blaze セッションまたは接続を閉じるにはどうすればよいですか?
python - pandas を使用して postgres から ZODB にデータをコピーする - read_csv または read_sql または blaze?
ZODB を使用する新しいアプリケーションを作成しています。レガシー データを主に postgres データベースからインポートする必要がありますが、一部の csv ファイルからもインポートする必要があります。データに必要な操作の量は限られています (リンクされたテーブルをマージしてプロパティを作成するための SQL 結合、一部のプロパティの名前の変更、空の列の処理など)。
postgres データのサブセットを使用して、関連するすべてのテーブルの csv ファイルにダンプし、これらを pandas データフレームに読み込み、操作を行いました。これは機能しますが、最初にデータを csv に転送することが原因の一部であるエラーがあります。
すべてのデータをロードしたい (そしてエラーを取り除きたい)。データベースに直接接続して read_sql を使用するか、csv ファイルを使用し続けることが理にかなっているのか疑問に思っています。
最大のテーブル (csv ファイル) は 8 MB しかないので、メモリの問題は発生しないはずです。ほとんどのエラーは、エンコーディングまたはセパレーターの選択に関係しています (データには |、;、:、および ' が含まれます)。
何かアドバイス?また、Blaze と呼ばれるものについて読んだことがありますが、実際にそれを使用する必要があるかどうか疑問に思っています。