7

かなりの量のデータ (数 GB) を処理しようとしてきましたが、私のパーソナル コンピューターは妥当な時間内にそれを処理することに抵抗があります。私は python のcsv.readerを使用していましたが、200,000 行を取得するだけでも非常に遅かったです。次に、このデータをsqliteデータベースに移行しました。これにより、結果が少し速く取得され、メモリをあまり使用しなくなりましたが、速度が依然として大きな問題でした。

繰り返しになりますが、このデータを処理するにはどのようなオプションが必要ですか? この種の目的に役立つと思われるAmazonのスポットインスタンスを使用することについて疑問に思っていましたが、探索する他のソリューションがあるかもしれません.

スポット インスタンスが適切なオプションであると仮定し、以前にそれらを使用したことがないことを考えると、それらから何を期待できるかを尋ねたいと思いますか? この種のものにそれらを使用した経験がある人はいますか?もしそうなら、あなたのワークフローは何ですか? 科学計算、画像処理などのワークフローを詳述したブログ投稿をいくつか見つけられると思ったのですが、何も見つからなかったので、少し説明したり、リンクを指摘したりしていただければ幸いです。

前もって感謝します。

4

2 に答える 2

11

numpy大規模なデータセットのローカルで作業するために使用しようと思います。csv.readernumpy 配列は、ベクトル化された numpy 関数を使用する場合に比べてメモリ使用量が少なくなり、計算時間が大幅に短縮されます。

ただし、ファイルの読み取り時にメモリの問題が発生する可能性があります。 numpy.loadtxtまたはnumpy.genfromtxt、ファイルを読み取るときに大量のメモリを消費します。これが問題である場合は、いくつかの (真新しい) 代替パーサー エンジンをここで比較します。この投稿によると、新しいpandas(numpy の上に構築されたライブラリ) パーサーはオプションのようです。

コメントで述べたように、ファイルを一度読み取った場合は、データを HDF5 のようなバイナリ形式で保存することもお勧めします。HDF5 ファイルからのデータの読み込みは、私の経験からすると非常に高速です (あなたの場合、sqlite と比較してどれだけ高速かを知ることは興味深いでしょう)。HDF5として配列を保存する私が知っている最も簡単な方法は、パンダを使用することです

import pandas as pd

data = pd.read_csv(filename, options...)
store = pd.HDFStore('data.h5')
store['mydata'] = data
store.close()

データのロードは、次のように簡単です

import pandas as pd

store = pd.HDFStore('data.h5')
data = store['mydata']
store.close()
于 2012-10-10T09:18:46.053 に答える
1

Python を使用する必要がある場合は、Python で Hadoop プログラムを実行できるDamboを試すことができます。始めるのはとても簡単です。次に、Hadoop ストリーミングを実行してビッグデータを処理する独自のコードを作成できます。短いチュートリアルを確認してください: https://github.com/klbostee/dumbo/wiki/Short-tutorial

同様のものは yelp からのものです: https://github.com/Yelp/mrjob

于 2012-10-19T07:10:51.403 に答える