問題タブ [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.

0 投票する
3 に答える
3140 参照

r - R: Is it possible to parallelize / speed-up the reading in of a 20 million plus row CSV into R?

Once the CSV is loaded via read.csv, it's fairly trivial to use multicore, segue etc to play around with the data in the CSV. Reading it in, however, is quite the time sink.

Realise it's better to use mySQL etc etc.

Assume the use of an AWS 8xl cluster compute instance running R2.13

Specs as follows:

Any thoughts / ideas much appreciated.

0 投票する
5 に答える
2611 参照

performance - Rで2つの大規模な論理ベクトルをクロス集計する最速の方法

長さが1E8を超える2つの論理ベクトル、xおよびの場合、2x2クロス集計を計算する最も速い方法は何ですか?y

答えはC/C ++で書くことだと思いますが、Rには、珍しいことではないので、この問題についてすでにかなり賢いものがあるのではないかと思います。

コード例、300Mエントリの場合(3E8が大きすぎる場合は、N = 1E8にしてください。合計サイズは2.5GB(2.4GB)未満を選択しました。密度を0.02に設定しました。これは、より面白くするためです(1つは可能です)。それが役立つ場合は、スパースベクトルを使用しますが、型変換には時間がかかる場合があります)。

いくつかの明白な方法:

  1. table
  2. bigtabulate
  3. 単純な論理演算(例sum(x & y)
  4. ベクトル乗算(ブーイング)
  5. data.table
  6. 上記の一部parallelmulticoreパッケージ(または新しいparallelパッケージ)から

私は最初の3つのオプション(私の答えを参照)を突き刺しましたが、もっと良いものともっと速いものがあるに違いないと感じています。

table動作が非常に遅い ことがわかりました。bigtabulate論理ベクトルのペアにとってはやり過ぎのようです。最後に、バニラ論理演算を実行することは厄介なことのように見え、処理中に大量の追加メモリをいっぱいにすることは言うまでもなく、各ベクトルを何度も調べます(3X?7X?)。これは膨大な時間の浪費です。

ベクトル乗算は通常は悪い考えですが、ベクトルがスパースである場合は、それをそのまま保存してからベクトル乗算を使用することで利点が得られる場合があります。

自由に変更して、それが集計関数の興味深い動作を示す場合は、自由に変更Nしてください。p:)


table更新1.私の最初の答えは、3つの素朴な方法のタイミングを示しています。これは、遅いと信じる根拠です。しかし、理解すべき重要なことは、「論理的」な方法は非常に非効率的であるということです。それが何をしているのか見てください:

  • 4つの論理ベクトル演算
  • 4つの型変換(論理から整数またはFP-for sum
  • 4つのベクトルの合計
  • 8つの割り当て(論理演算用に1つ、合計用に1つ)

それだけでなく、コンパイルも並列化もされていません。それでも、それはまだズボンを打ち負かしtableます。、追加の型変換()を使用しても、がビートになることbigtabulateに注意してください。1 * cbind...table

更新2.Rの論理ベクトルがサポートNAしていること、およびこれらのクロス集計のシステムのレンチになることを誰もが指摘しないように(ほとんどの場合に当てはまります)、私のベクトルはis.na()またはから来ていることを指摘する必要がありis.finite()ます。:)私はデバッグNAやその他の非有限値を使用してきましたが、最近は頭痛の種になっています。すべてのエントリがであるかどうかわからない場合はNA、でテストすることができますany(is.na(yourVector))。これは、このQ&Aで生じるアイデアのいくつかを採用する前に賢明です。


更新3.BrandonBertelsenはコメントで非常に合理的な質問をしました:サブサンプル(結局のところ、初期セットはサンプルです;-))がクロスを作成する目的に十分であるのに、なぜこれほど多くのデータを使用するのですか?集計?統計にあまり深く入り込まないでください。ただし、データは、TRUE両方の変数について、観測が非常にまれな場合から発生します。1つはデータ異常の結果であり、もう1つはコードのバグの可能性によるものです(計算結果のみが表示されるため、バグの可能性があります。変数xを「ガベージイン」およびy「ガベージアウト」と考えてください。結果として、質問は、コードによって引き起こされる出力の問題が、データが異常である場合だけであるのか、それとも良いデータが悪くなる他の例があるのか​​ということです(これが私が質問した理由です、、、またはが検出されたときNaNに停止NAInfします。)

TRUEこれは、私の例の値の確率が低い理由も説明しています。これらは実際には0.1%未満の時間で発生します。

これは別のソリューションパスを示唆していますか?TRUEはい:2つのインデックス(つまり、各セット内のの位置)を使用して、セットの共通部分をカウントできることを示しています。交差点を実行する前にセットの要素を最初に並べ替えるMatlab(はい、これはRですが、我慢してください)によってしばらく前に燃やされたため、セットの交差点を避けました。(私は漠然と複雑さがさらに恥ずかしかったことを思い出します:O(n^2)代わりにのようにO(n log n)。)

0 投票する
1 に答える
246 参照

hadoop - Hadoop で日々増加するデータを処理する方法

Hadoop で毎日増加するデータを処理する方法:

例えば:

初日、入力フォルダー (hadoop/demo など) に 100 万個のファイルがある場合があります。

同じフォルダで 2 日目には、既存の 100 万ファイル + 別の新しい 100 万ファイルから合計 200 万ファイルが増える可能性があります。

同様に 3 日 4 日... 続けます。

私の制約は -> 初日のファイルは次の日に処理されるべきではありません。

(つまり) 新しいファイルが追加されたときに、既に処理されたファイルを再度処理するべきではありません。具体的には、新しく追加されたファイルのみを処理し、古いファイルは無視する必要があります。

この問題を解決できる方法で私を助けてください。

それでも制約を理解していない場合は、制約について詳しく説明できるように、不明な点を教えてください!

0 投票する
1 に答える
181 参照

python - 抽出せずにファイルにデータを追加するアーカイブ形式

次のような順序付けられていないレコードを含む大きな xml ファイル (100GB 以上) があります。

読み取り専用モードでデータにアクセスする必要がありますが、ページごとにグループ化します。

ページを ID 順に並べてはなりません。

私のソリューションでは、今ではxmlを前処理する必要があり、ページごとに:

  • 固有の命名規則でファイルを開きます (例: 1 ページ目は「1.data」、「2.data」など)。
  • 現在のページのコンテンツを追加する
  • ファイルを閉じる

私にとっての問題は、多数のページを処理するには、何百万ものファイルを作成する必要があることです。もちろん、これはあまり良くありません。

私の質問は、ある種のアーカイブ ファイル (tar や zip など) を使用してすべてのデータをシリアル化できるかどうかです。利点は、すべてのデータを含む大きなファイルが 1 つだけで、順次読み取ることができることです。圧縮は必ずしも必要ではありません。

私のソフトウェアはスタンドアロンである必要があり、Python を使用することを好むため、データベースの使用を避けることを好みます。

ありがとう、

リカルド

0 投票する
2 に答える
24478 参照

r - CSV ファイルを分割して読み込むための戦略は?

中程度のサイズのファイル (4GB CSV) を読み込むのに十分な RAM がないコンピューター (64 ビット Windows では 8GB) があります。以前は、クラスター ノードにロードして読み込むだけでしたが、新しいクラスターではプロセスが 4 GB の RAM に制限されているようで (ハードウェアがマシンごとに 16 GB であるにもかかわらず)、短期的な修正が必要です。 .

使用可能なメモリ制限に合わせて CSV ファイルの一部を R に読み込む方法はありますか? そうすれば、一度にファイルの 3 分の 1 を読み取り、必要な行と列にサブセット化してから、次の 3 分の 1 を読み取ることができますか?

いくつかの大きなメモリのトリックを使用してファイル全体を読み取ることができる可能性があることを指摘してくれたコメント投稿者に感謝します: R で非常に大きなテーブルをデータフレームとしてすばやく読み取る

他のいくつかの回避策を考えることはできますが (たとえば、適切なテキスト エディターで開き、観測データの 2/3 を削除してから R に読み込むなど)、できれば避けたいと思います。

したがって、それをバラバラに読むことは、今のところ最善の方法のように思えます.

0 投票する
4 に答える
1995 参照

hadoop - 大きなXMLをTSVに解析する

いくつかのXMLをTSVに解析する必要があります。XMLファイルのサイズは50GBのオーダーです。これを解析するために選択する必要がある実装については、基本的に疑わしいです。2つのオプションがあります。

  1. SAXParserを使用する
  2. Hadoopを使用する

SAXParserの実装についてはかなりのアイデアがありますが、Hadoopクラスターにアクセスできると思います。これは、Hadoopの目的であるため、ビッグデータであるため、Hadoopを使用する必要があります。

誰かがHadoopでこれを行う方法や、そのような大きなファイルの効率的なSAXParser実装、またはHadoopまたはSAXparserに何をすればよいかなど、ヒント/ドキュメントを提供できれば素晴らしいと思います。

0 投票する
3 に答える
383 参照

c# - ディスクベースのドキュメントベースのストレージ

Web上で無料で利用できる拡張性の高いディスクベースのNoSQLストレージシステムはありますか?SQL Serverの良いところは、拡張性があることですが、プロジェクトはすべてオブジェクトであるため、プロジェクトをSQLテーブルに移行するのは悪夢ですか?

オプションは次のとおりです。1。メモリから実行2.ドキュメントをシリアル化する3.SQLに変換する4.大容量のNoSQLデータストレージを使用する

0 投票する
2 に答える
153 参照

php - csv ファイルの大きなセットをデータベースに挿入する必要がある

CSV ファイルに csv -> mysql 挿入するように要求されました。

100 から 100k 行のデータを含む 20k ファイルの csv があります。

だからここに私ができると思ったことがあります:

私のマシンでは、簡単なコマンドを使用してすべてのファイルを 1 つに結合できました。

次にそのファイルを処理し、php fgetcsv を使用してそのファイルを処理し、DB に挿入します。

または

ディレクトリを読み取り、各ファイルを処理し、完了したら別のフォルダーに転送するphpプログラムを作成できます。

専用サーバーあり

8GBのメモリが利用可能な良いPC

何を指示してるんですか ?

0 投票する
1 に答える
278 参照

sql-server - SQL Server での高速で大量のデータ入力

私は現在、(とりわけ)大量のデータをデータベースに非常に高速に書き込むプロジェクトの準備段階にあります(つまり、6台のカメラからの画像(および関連するメタデータ)を1秒間に40回以上記録します) .

Web で検索すると、「ビッグ データ」はより高いレートでより小さな「ビット」 (つまり市場データ) に適用されることが多いようです。

そう..

  • 「やってみてどうなるか見てみよう」より科学的な方法はありますか?
  • 「ハードウェアを投げるだけ」が最善のアプローチですか?
  • チェックすべきテクノロジー/ホワイト ペーパー/検索用語はありますか?
  • 他のデータベース (または単にディスクに保存すること) を検討する説得力のある理由はありますか?

申し訳ありませんが、これはかなり自由回答形式の質問です (プログラマー向けの質問でしょうか?)