1

特定の要件に合わせて No-SQL データストアを使用することについての提案を受けたいです。

説明させてください: 5 つの csv ファイルを処理する必要があります。各 csv には 500 万行が含まれており、共通 ID フィールドも各 csv に表示されます。したがって、500 万行を反復してすべての csv をマージする必要があります。したがって、python 辞書を使用して、共通 ID フィールドに基づいてすべてのファイルをマージします。しかし、ここでのボトルネックは、python-dictionary では 500 万個のキーをメモリ (< 1gig) に格納できないことです。ということで、No-Sqlを使うことにしました。500万個のキーバリューストレージを処理するのに役立つのではないかと思います。

とにかく、値を更新するためにそれぞれを反復する必要がある 5 つの csv があるため、反復を減らすことはできません。

それに伴う簡単な手順はありますか?この方法でよろしければ、キーと値のペアを処理するための No-Sql データストアを教えていただけませんか?

注:リスト型の値もあります。

4

3 に答える 3

1

CSV が既に ID でソートされている場合は、マージ結合アルゴリズムを使用できます。単一行を反復できるため、すべてをメモリに保持する必要はありません。

ただし、アルゴリズムを複数のテーブル/CSV ファイルに拡張することは、より大きな課題になります。(しかし、おそらく Hadoop のような新しいことを学ぶよりも速いでしょう)

于 2012-07-17T13:08:14.417 に答える
0

これが 1 回限りのプロセスである場合は、1G を超えるメモリを備えた EC2 ノードをセットアップし、そこで Python スクリプトを実行することをお勧めします。500 万項目はそれほど多くはなく、Python 辞書はそれをかなり処理できるはずです。この場合、Hadoop は必要ないと思います。

また、イテレータを使用して同期された 5 つのファイルを実行するよりも、項目を複数回実行して並べ替えることでスクリプトを最適化して、すべてを同時にメモリに保持する必要がないようにすることもできます。

于 2012-07-17T12:36:10.243 に答える
0

私が理解しているように、5 つの入力ファイルから約 500,000 のアイテムをマージしたいと考えています。1 台のマシンでこれを行うと、1g のデータを処理するのに長い時間がかかる場合があります。そのため、Hadoop を使用する可能性を確認することをお勧めします。Hadoopはバッチ処理ツールです。通常、Hadoop プログラムは Java で作成されますが、Pythonでも作成できます。

Hadoop を使用してクラスター内のデータを処理する可能性を確認することをお勧めします。HBase (列データストア) を使用してデータを保存できます。それはアイデアです。あなたの問題に当てはまるかどうかを確認してください。

これで解決しない場合は、解決しようとしている問題についてさらに詳しく説明してください。技術的には、この問題を解決するために任意の言語またはデータストアを使用できます。ただし、(時間またはリソースの観点から) どのソリューションが最も効果的か、および新しいツール/データベースを使用/学習する意欲を見つける必要があります。

始めるための優れたチュートリアル: http://developer.yahoo.com/hadoop/tutorial/

于 2012-07-17T12:22:33.877 に答える