問題タブ [bigdata]
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.
c# - 多くの行をループする
データベースから 100 万行ほどの潜在的な行をループするのに時間の問題があります。私は基本的に行を DataTable にプルし、それらをループしますが、遅くなります。そこに代わるものは何ですか?この行を 20,000 個のチャンクに分割できます。C# で並列処理を使用できますか? 基本的に、コードは特定のクエリに一致する可能性のあるすべてのレコードをループし、それが正当なエントリであるかどうかを判断しようとします。そのため、すべてのレコードを個別に参照する必要があります。1 つのオブジェクトのレコードは 1,000 万行に達する可能性があります。アプローチは、複数のコンピューターまたは複数のコアを備えた単一のマシンでの PP での並列処理のように見えますか、または何らかのデータ構造/アプローチの変更ですか?
これを迅速かつ合理的にするために役立つ意見、考え、推測はありますか?
python - 妥当な時間内に Python で (かなり) 大きなリレーショナル データをクエリしますか?
約 170 万行、合計 1 GB のスプレッドシートがあり、さまざまなクエリを実行する必要があります。Python に最も慣れている私の最初のアプローチは、作成しようとしていたクエリを容易にする方法でキーを設定した一連の辞書をハックすることでした。たとえば、特定の市外局番と年齢を持つすべての人にアクセスできるようにする必要がある場合、areacode_age 2 次元辞書を作成します。最終的にかなりの数のこれらが必要になり、メモリ フットプリントが倍増しました (約 10GB のオーダーまで)。これをサポートするのに十分な RAM があったにもかかわらず、プロセスは依然として非常に低速でした。
この時点で、私はカモのゲームをしているように見えました。「まあ、これがリレーショナル データベースの目的ですよね?」と私は思いました。sqlite3 をインポートし、データをインメモリ データベースにインポートしました。データベースは速度を重視して構築されており、これで問題が解決すると思います。
ただし、「SELECT (a, b, c) FROM foo WHERE date1<=d AND date2>e AND name=f」のようなクエリを実行すると、0.05 秒かかることがわかります。170 万行でこれを行うと、24 時間の計算時間がかかります。辞書を使った私のハッキーなアプローチは、この特定のタスクで約 3 桁高速でした (そして、この例では明らかに date1 と date2 をキーにすることができなかったため、名前に一致するすべての行を取得し、日付でフィルタリングしていました)。
それで、私の質問は、なぜこれがそんなに遅いのか、どうすれば速くできるのかということです. Pythonic アプローチとは何ですか? 私が検討してきた可能性:
- sqlite3 は遅すぎるので、もっと重いものが必要です
- 何らかの方法でスキーマまたはクエリを変更して、より最適化する必要がありますか?
- これまでに試したアプローチは完全に間違っており、まったく新しいツールが必要です
- sqlite 3 で、cursor.execute を繰り返し呼び出すと、cursor.executemany を使用するよりもはるかに遅いことをどこかで読みました。ただし、executemany は select ステートメントとさえ互換性がないことが判明したため、これはニシンだったと思います。
ありがとう。
performance - 大きなJSFデータテーブルがIEだけに入力されないのはなぜですか?
JSFでHtmlDataTableを使用して動的にテーブルを生成しようとしています。それぞれ25を超える行と列の数を指定している場合、一部のセルはIEでのみ入力されておらず、非常に遅くなっています。ただし、Firebugを使用してコードをデバッグすると、値を確認できます。FirefoxとChromeでは正常に動作しています。
これはどのように発生し、どうすれば解決できますか?
r - sqldf() を使用して、100 万の項目に一致する行を選択する
これは、ここでの使用に関する回答のフォローアップですsqldf()
https://stackoverflow.com/a/1820610
私の特定のケースでは、1 億 1000 万行を超えるタブ区切りファイルがあります。460 万のタグ ID に一致する行を選択したいと考えています。
次のコードでは、タグ ID はtag.query
ただし、この例は小さなクエリで機能しますが、上記の大きな例は処理しません。
代替アプローチに関する提案はありますか?
simulation - シミュレーション用の Akka
私は akka と Actor-Pattern を初めて使用するので、それが自分のニーズに合っているかどうかわかりません。
相互に影響を与えることができる akka と何百万ものエンティティ (ドメイン オブジェクト - 後のアクターと考えてください) を使用してシミュレーションを作成したいと考えています。したがって、多かれ少なかれ「あいまいな」結果を伴うシミュレーションとして考えると、エンティティの配列があり、これらのエンティティのそれぞれには速度がありますが、実際のエンティティの前にあるエンティティによって妨害されます。シミュレーションが開始されると、各エンティティは n フィールドを移動する必要があります。他のエンティティによって妨げられた場合は、それより少ないフィールドを移動する必要があります。複数の反復があり、最終的には新しい順序になります。これは、主要なエンティティの「スナップショット」が必要になるまで、いくつかのラウンドで繰り返されます (その後、次のラウンドが始まる前に削除される可能性があります)。
したがって、これをakkaで作成できるかどうかわかりません。理由は次のとおりです。
各アクターの位置を含むグローバル リストを作成することは可能ですか? 私の知る限り、これはアクターのカプセル化に違反しています。アクター自体にアクターの位置を入れることはできますが、このアクターの周りのアクターを確認/通知するにはどうすればよいですか? これに加えて、グローバル リストは同期の問題を引き起こし、パフォーマンスに影響を与えます。これは、望ましい動作とは正反対です (そして akka/アクター パターンを補完します)。
私は何を逃したのですか?別の設計アプローチを探す必要がありますか? 提案をありがとう。
更新: イベントバスと分類子を操作することもオプションではないようです。ドキュメントを参照する:
「したがって、サブスクリプションが非常に頻繁に変更されるユースケースには適していません」
r - Rのffとfilehashパッケージの違い
25 列と最大 1M 行で構成されたデータフレームがあり、12 個のファイルに分割されています。これらをインポートしてから、reshape
パッケージを使用してデータ管理を行う必要があります。各ファイルが大きすぎるため、インポートとデータ処理のために「非 RAM」ソリューションを探す必要があります。現在、回帰を行う必要はありません。データフレームのみに関する記述統計がいくつかあります。
少し検索したところ、2 つのパッケージが見つかりff
ました。最初にマニュアルfilehash
を読んだfilehash
ところ、データフレームをファイルにインポートするためのコードをいくつか追加しただけで、残りは通常の R 操作と似ているようです。
さまざまなクラスが付属しているため、まだ試していませんが、実際の作業を開始する前に、それ自体ff
を理解するために時間を費やす価値があるかどうか疑問に思っています. ff
しかし、filehash
パッケージはしばらくの間静的であるように思われ、このパッケージについての議論はほとんどありませんfilehash
。
使用するパッケージを選択するのを手伝ってくれる人はいますか? または、それらの違い/長所と短所は何ですか? ありがとう。
更新 01
私は現在filehash
データフレームのインポートに使用していますが、インポートしたデータフレームfilehash
は読み取り専用と見なす必要があることに気付きました。そのデータフレームのそれ以上の変更はすべて、再度保存しない限りファイルに保存されないため、あまり便利ではありません私の見解では、節約をすることを思い出す必要があるからです。これについて何かコメントはありますか?
bigdata - 並列コンピューティング: 分散システム vs マルチコア プロセッサ?
マシンごとに数百または数千のコア/CPU (または GPGPU でさえ) をサポートする個々のマシンを作成できるのに、大規模な並列処理用の分散システムを作成するすべてのトラブルを経験する必要があるのはなぜでしょうか?
では基本的に、多数のコアをサポートする 1 台のマシンではるかに低コストで確実に実行できるのに、マシンのネットワーク上で並列処理を行う必要があるのはなぜでしょうか?
mysql - ビッグデータ用のデータベースの選択肢
多くのテキスト ファイルがあり、それらの合計サイズは約 300GB ~ 400GB です。それらはすべてこの形式です
各行はキーと値で構成されています。キーのすべての値を照会できるデータベースを作成したいと考えています。たとえば、key1 をクエリすると、value_a、value_b、および value_c が返されます。
まず第一に、これらすべてのファイルをデータベースに挿入することは大きな問題です。LOAD DATA INFILE 構文を使用して、数 GB のサイズのチャンクを MySQL MyISAM テーブルに挿入しようとしています。しかし、MySQL はデータの挿入にマルチコアを利用できないようです。それは地獄のように遅いです。したがって、MySQL は、レコードが非常に多い場合には適していないと思います。
また、データベースを定期的、毎週、または可能であれば毎日更新または再作成する必要があるため、挿入速度が重要です。
単一のノードで計算と挿入を効率的に行うことはできません。効率的にするには、異なるノードで並列に挿入を実行する方がよいと思います。
例えば、
というわけで、最初の基準がこちら。
基準 1. 分散バッチ方式での挿入速度が速い。
次に、テキスト ファイルの例でわかるように、複数の同じキーを異なる値に指定することをお勧めします。例の key1 が value_a/value_b/value_c にマップされるように。
基準 2. 複数のキーが許可されている
次に、データベース内のキーをクエリする必要があります。リレーショナルまたは複雑な結合クエリは必要ありません。必要なのは単純なキーと値のクエリだけです。重要な部分は、複数のキーが同じ値になることです
基準 3. シンプルで高速なキー値クエリ。
HBase/Cassandra/MongoDB/Redis などがあることは知っていますが、それらすべてに精通しているわけではなく、どれが自分のニーズに合っているかわかりません。問題は、どのデータベースを使用するかということです。どれも私のニーズに合わない場合は、自分で作成することさえ計画していますが、それには努力が必要です:/
ありがとう。
plsql - PL/SQL を Hive QL に変換する
PL/SQL クエリを指定して、それぞれのハイブ クエリを取得できるツールが必要です。SQL を hql に変換するツールはたくさんあります。つまり、クラウド データベースの場合は taod です。しかし、それぞれのハイブクエリは表示されません。
指定されたSQLをHQLに変換するようなツールはありますか。私を助けてください。
よろしくお願いします、ラタン