問題タブ [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.
python - 大きなテキスト データの並べ替え
大きなファイルがあります (1 億行のタブ区切り値 - サイズ約 1.5GB)。フィールドの 1 つに基づいてこれをソートする既知の最速の方法は何ですか?
ハイブを試しました。Pythonを使用してこれをより高速に実行できるかどうかを確認したいと思います。
r - ビッグデータはルールパッケージから「トランザクション」に変換されます
Rのarulesパッケージは、クラス'transactions'を使用します。したがって、この関数apriori()
を使用するには、既存のデータを変換する必要があります。2列で約1.6mmの行を持つマトリックスがあり、次のようにデータを変換しようとしました。
ここで、original_dataは私のデータマトリックスです。データ量が多いため、64GBのRAMを搭載した最大のAWSAmazonマシンを使用しました。しばらくすると
結果のベクトルが「AnswerType」のベクトル長制限を超えています
マシンのメモリ使用量はまだ60%で「のみ」でした。これはRベースの制限ですか?サンプリングを使用する以外にこれを回避する方法はありますか?データの1/4のみを使用する場合、変換は正常に機能しました。
編集:指摘したように、変数の1つは文字ではなく要因でした。変更後、変換は迅速かつ正確に処理されました。
java - Java での大きな文字列リストの処理
数十億の文字列行を調べて、それぞれが一意であるかどうかを確認するタスクがあります。すべての行自体を PC の RAM メモリ内に収めることはできません。また、行数が Integer.MAX_VALUE よりも多くなる可能性があります。
この量のデータを処理する最善の方法は、各文字列のハッシュ コードを何らかの HashTable に入れることだと思います。
だから、ここに私の質問があります:
- の代わりに何を使用すればよい
String.hashCode()
ですか? (戻り値はintですが、おそらくlongが必要です) - このサイズのリストを操作するための最速の方法/フレームワークは何ですか? 私が最も必要としているのは、リストに要素が含まれているかどうかをすばやく確認する機能です
sql - SQL:結合と非正規化(大量のデータ)
私は知っている、この質問のバリエーションは以前に尋ねられた。しかし、私の場合は少し異なるかもしれません:-)
そこで、イベントを追跡するサイトを構築しています。各イベントにはIDと値があります。また、ID、年齢、性別、都市、国、ランクを持つユーザーによって実行されます。(重要な場合、これらの属性はすべて整数です)
2つのクエリに対する回答をすばやく取得できる必要があります。
- 特定のプロファイルを持つユーザーからイベントの数を取得します(たとえば、ロシアのモスクワに住む18〜25歳の男性)
- 特定のプロファイルを持つユーザーからのイベントの値の合計(おそらく平均も)を取得します-
また、データは複数の顧客によって生成され、その顧客は複数のsource_idを持つことができます。
アクセスパターン:データは主にコレクタープロセスによって書き込まれますが、クエリされた場合(まれに、Web UIによって)、迅速に応答する必要があります。
確かに複数のテーブルまたは単一のサーバーが処理できる大量のデータを期待しています。
イベントを1日あたり別々のテーブルにグループ化することを考えています(つまり、「events_20111011」)。また、テーブル名の前に顧客IDとソースIDを付けて、データを分離し、簡単に破棄(古いデータを削除)して比較的簡単に移動(他のマシンに負荷を分散)できるようにします。このように、そのようなすべてのテーブルには、たとえば1,000万のトップなどの限られた数の行があります。
したがって、問題は、ユーザーの属性をどうするかということです。
オプション1、正規化:それらを別のテーブルに保存し、イベントテーブルから参照します。
- (プロ)データの繰り返しはありません。
- (con)参加しますが、これは高価です(またはそう聞いたことがあります)。
- (con)これには、ユーザーテーブルとイベントテーブルが同じサーバー上にある必要があります
オプション2、冗長:ユーザー属性をイベントテーブルに保存し、それらにインデックスを付けます。
- (プロ)より簡単な負荷分散(自己完結型のテーブルは移動可能)
- (プロ)より単純な(より速い?)クエリ
- (con)ユーザー属性と対応するインデックスを繰り返すために使用される大量のディスクスペースとメモリ
r - 大きなデータセットのプロットを防ぐために R のプロット関数 (または ggplot2) をラップする
plot
大きなデータセットをプロットする方法を尋ねるのではなく、大きなオブジェクトをプロットするときに、多くのプロットを生成するコードが打撃を受けないようにラップしたいと思います。すべての機能が保持されるように非常に単純な方法でラップplot
するにはどうすればよいでしょうか。
このコードは へのごく普通の呼び出しに対しては機能しますが、 (以下を参照)plot
と同じ一般性が欠けています。plot
これが失敗する例:
plot
すべての引数を通過しながら、このデータのチェックをプロットできるようにラップする簡単な方法はありますか? そうでない場合はどうggplot2
ですか?私は機会均等の非プロッターです。(データセットが大きい場合は、hexbin、サブサンプリング、密度プロットなどを使用しますが、ここでは焦点を当てていません。)
注 1: アイデアをテストするときは、myThreshold <- 1000
1M を超えるサイズではなく、サイズが 100 を超える (または変数を設定する) ことをお勧めします。:)
bigdata - TB 単位のタイムスタンプ付きデータを保存するためのプラットフォーム
私たちは、最大 150 万のタイムスタンプ付きレコード、1 秒あたり約 24MB、または 1 日あたり約 2TB の大量のデータを作成するシステムを持っています。
データは複数のソースから取得され、複数の形式があります。共通点の 1 つはタイム スタンプです。
現在、約 5 日分のデータをファイルに保存し、レポートを生成する社内ソフトウェアを使用しています。
何年にもわたるデータを保持してクエリできるスケーラブルなシステムの作成を検討しています。
Nathan Marz がHow to be Beat the CAP theoremで説明しているように、Hadoop/ElephantDB を長期バッチ ストレージに使用し、Storm/Cassandra をリアルタイム レイヤーに使用します。
コミュニティが代替案を指摘したり、さらに読むことを提案したりできるかどうか疑問に思っていますか?
データが主に時間別に整理されているという事実は、特定のタイプのソリューションに役立つのでしょうか?
この種の質問をするためのより良いフォーラムはありますか?
ありがとう
c++ - C++ バッファリングされたファイルの読み取り
大きなテキスト ファイルを 1 行ずつ読み取る (std::getline や fgets など) 場合、定義済みの読み取りバッファ サイズでバッファリングできるのでしょうか、それとも特別なバイト関数を使用する必要があるのでしょうか?
これは、I/O 操作数の最適化 (一度に 32 MB を HDD から読み取るなど) を使用して非常に大きなファイルを読み取ることを意味します。もちろん、バッファリングされた読み取りを手作りすることはできますが、標準のファイルストリームにはその可能性があると思いました。
java - 数十億バイトを処理するJava
私はJavaで圧縮アルゴリズムを作成しています; 私のアルゴリズムを使用するには、ターゲットファイルの構造に関する多くの情報が必要です。
データを収集した後、ファイルを再度読み取る必要があります。 <-しかし、私はしたくありません。
ファイルを再読み込みするときに、ファイルのデータをかなり特殊な形式に「変換」することで、圧縮のターゲットとして適しています。それから私はそれを圧縮します。
現在の問題は次のとおりです。
- ファイルを再読み込みするために新しいFileInputStreamを開きたくありません。
- 通常はターゲットファイルの150%のサイズである変換されたファイルをディスクに保存したくありません。
ファイルの先頭に移動するためにFileInputStreamを「リセット」する方法はありますか?ディスクに書き込まずに大量の「変換された」データを効率的に保存するにはどうすればよいですか?
python - 32 ビットのアドレス空間が不足しているようです。私のオプションは何ですか?
を使用して大きな行列の共分散を取得しようとしていnumpy.cov
ます。次のエラーが表示されます。
これは 32 ビット マシン/ビルドでは珍しいことではないようです (私は 64 ビット mac os x 10.5 を持っていますが、64-bit で numpy+scipy+matplotlib をビルドするのに問題があったため、32 ビット python と numpy ビルドを使用しています)。ビットの取り付け)。
では、この時点で、マシンを切り替えない場合 (現時点では他に利用できるマシンはありません)、分析を続行できるようにするための推奨される一連のアクションは何でしょうか? fortran/C にエクスポートしますか? シンプルな(r)ソリューションはありますか?ご提案いただきありがとうございます。
sql - 何百万もの行を ID で削除する最良の方法
PG データベースから約 200 万行を削除する必要があります。削除する必要がある ID のリストがあります。ただし、これを行うには何日もかかります。
それらをテーブルに入れて、100のバッチで実行しようとしました.4日後、これはまだ297268行が削除されたまま実行されています. (IDテーブルから100個のIDを選択し、そのリストのどこを削除し、選択した100個をIDテーブルから削除する必要がありました)。
私は試した:
それも永遠にかかります。完了するまで進行状況を確認できないため、どれくらいの時間を測定するのが難しいですが、クエリは 2 日後も実行されていました。
削除する特定のIDがわかっているときにテーブルから削除する最も効果的な方法を探しているだけで、何百万ものIDがあります。