問題タブ [large-files]
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 - 1GB の csv ファイルを繰り返し処理しているときに Python が停止する
私は2つのファイルを持っています:
- metadata.csv: ID が含まれ、その後にベンダー名、ファイル名などが続きます。
- hashes.csv: ID が含まれ、その後にハッシュが続きます。ID は基本的に、ファイル メタデータをそのハッシュに関連付ける一種の外部キーです。
特定のベンダーに関連するすべてのハッシュをすばやく抽出するために、このスクリプトを作成しました。hashes.csv の処理が完了する前にクラップアウトします
このスクリプトは、停止する前に hashes.csv から約 2000 のエントリを取得します。私は何を間違っていますか?行ごとに処理していると思いました。
ps。csv ファイルは一般的な HashKeeper 形式で、解析しているファイルは NSRL ハッシュ セットです。http://www.nsrl.nist.gov/Downloads.htm#converter
更新:以下の実用的なソリューション。コメントしてくれたみんなありがとう!
editing - 大きなデータファイルの編集
編集する必要のある大きなファイル(ほとんどはフラットテキストファイルですが、CSV、固定幅、XMLなど)があることを予測できるプロジェクトを開始しようとしています。アプリケーション内でこの編集を行うためのピースを開発する必要があります。
全部をロードせずに大量のデータ(おそらくGBの範囲)の編集を処理するための良い方法を決定しようとしたところ、Audacityは大きなファイルを非常にうまく処理できることがわかりました。Audacityはオープンソースであるため、このような状況で私にとって優れた教育ツールになると思いました。しかし、私は自分自身を輪になってコードを調べ始め、今では完全に混乱しています。
私はこの質問から2つの結果を期待しています:
ファイル全体をロードせずにこの編集を処理するための良い方法。私は、データを編集しながらロードし、オンデマンドでキャッシュすることを考えました。
Audacityがそれをどのように行うかの説明。
私はC#と.NETを使用していますが、回答をその環境に結合する必要はありません。
java - ftpを使用したリモートJavaプログラムの実行、リモートマシン上の非常に大きなデータセット-プログラムからデータ、データからプログラム
私はJavaベースのアプリケーションを開発しています。その関連要件を以下に示します
大規模なデータセットは、ネットワーク上の複数のマシンに存在します。私のプログラムは、これらのデータセットを処理して結果をフェッチするためにJavaプログラムを(リモートで)実行する必要があります
Windowsデスクトップのユーザーは、マシンAでデータセット(いくつかのギグ)を処理する必要があります。私のプログラムは、ユーザーのマシンに常駐できます。彼は自分のマシンから私のプログラムを実行し、リモートマシンでデータセット処理を開始します
ネットワークを介してリモートマシンから自分のマシンにデータセットを取得する代わりに、彼はリモートマシンでプログラムを実行し、結果を取得します
ユーザーは他のマシンにオープンアクセスできる可能性がありますが、ftpが必要です
データをネットワーク経由でユーザーのマシンに持ち込まないでください。
ユーザーはWindowsOSを持っています
私の質問
この種のリモートプロセス実行を実行するにはどうすればよいですか?何か案は?
私はHadoopを見ています。私はWindowsXPに取り組んでいます。単一ノードクラスターでHadoopを機能させることができませんでした。良いドキュメントが見つかりません。したがって、Hadoopのテストはまだ行っていません。私が正しい方向に進んでいるかどうかについてのコメントはありますか?
Hadoopのインストールやトラブルシューティングに役立つリンクはありますか?
ご回答ありがとうございます。さらに/具体的な詳細を提供する必要があるかどうかをお知らせください。
-jv
web - Web ページで大きな背景画像をシームレスに使用する
サイトに巨大な背景画像を配置したいのですが、ユーザーがそれらをダウンロードするのに苦労したり、背景が読み込まれるとサイトが醜くなったりすることはありません。
サイズは 1920 X 1080 以下ですが、キロバイト/メガバイトで表すのは困難です。
ここでの私のオプションは何ですか?また、どれが最も効果的ですか?
私は帯域幅についてあまり気にしていません。ユーザーにすべてが見栄えが良いと思ってもらいたいだけです ;)
c - 非常に大きなファイルを透過的に管理するための高速な「C」ライブラリ
PC に接続された別のデバイスからストリーミング (800Mb/s) されている非常に大量のデータ (>500GB) を保存する必要があります。MySQl/ISAM などのデータベースの使用は速度が制限されており、「C」stdio ファイル lib (つまり、fopen/fclose/fwrite) の上にある高速で軽量なライブラリを探しています。これにより、書き込み/読み取りが可能になります。非常に大きなファイル (利用可能なディスク容量まで)。
バックグラウンドで、大きなファイルを 1GB などの小さなファイルに分割することができます。API でこれらの詳細を処理する必要があります。
データは圧縮されたバイナリ形式で PC に到着し、ハードディスクに書き込む前にそれ以上の処理は必要ありません。
ライブラリは Windows と Linux で動作するはずです。
wxwidgets - wxTextCtrl のテキスト表示が遅いのはなぜですか?
wxTextCtrl があり、非常に大きな文字列を入れる必要があります。(15 MB の文字列のように) 唯一の問題は、非常に遅いことです。これが私がやっていることです:
ただし、これはボトルネックではありません。これは、このコード ブロックが含まれている関数が返されるとすぐに発生します。アプリ全体が約 30 秒間フリーズします。ChangeValue の直後に wxYield を試してみました。これにより、文字列の最初の数行がコントロールに表示されますが、その後もフリーズします。どうすればこれを回避できますか?
ChangeValue はほぼ瞬時に返されることを強調しなければなりません。この後、おそらく wxTextCtrl の内部メッセージ ハンドラか何かで遅延が発生します。
java - 大きなファイルを徐々に読み込むにはどうすればよいですか?
Java でファイルを読み取る際に問題が発生しています。それは絶対に巨大で (2,5G)、メモリを調整しても役に立ちません。データはすべて 1 行にあるため、一度に 1 行ずつ読み取ることはできません。私がしたいのは、「<|start|>」や「<|end|>」などの特定の文字列が見つかるまでファイルを読み取り、これらの文字列の間にデータを出力してメモリをクリアし、ファイルの残りを読み続けることができます。したがって、私が基本的に探しているのは、特定の開始文字列で読み取りを開始し、停止文字列で読み取りを停止するタイプのリーダーです。誰でも私を助けることができますか?
c - 大量のテキスト データをメモリに格納するにはどうすればよいですか?
私はacパーサーに取り組んでいますが、専門家が大量のテキスト/文字列(> 100MB)をメモリに保存する方法を知りたいですか?コンテンツは常に速いペースでアクセスできることが期待されます。bg: レッドハット/gcc/libc
単一の char 配列は境界外になり、セグメンテーション違反を引き起こします...任意のアイデアや経験を共有/議論することを歓迎します...
c# - C# でストリームを使用して大きなテキスト ファイルを読み取る
私たちのアプリケーションのスクリプト エディターに読み込まれる大きなファイルを処理する方法を考え出すという素敵な仕事があります (クイック マクロ用の内部製品のVBAのようなものです)。ほとんどのファイルは約 300 ~ 400 KB で、読み込みは問題ありません。しかし、100 MB を超えると、(ご想像のとおり) 処理が困難になります。
何が起こるかというと、ファイルが読み取られて RichTextBox に押し込まれ、ナビゲートされます。この部分についてはあまり心配する必要はありません。
最初のコードを書いた開発者は、単純に StreamReader を使用して実行しています。
完了するまでにかなりの時間がかかる可能性があります。
私の仕事は、このコードを分割し、チャンクでバッファに読み込み、キャンセルするオプションを含むプログレスバーを表示することです。
いくつかの仮定:
- ほとんどのファイルは 30 ~ 40 MB になります
- ファイルの内容はテキスト (バイナリではない) で、一部は Unix 形式、一部は DOS 形式です。
- コンテンツが取得されたら、どのターミネータが使用されているかを調べます。
- リッチテキストボックスでレンダリングするのにかかる時間が読み込まれると、誰も心配しません。これは、テキストの初期ロードにすぎません。
質問は次のとおりです。
- StreamReader を使用して、Length プロパティ (ProgressMax など) をチェックし、設定されたバッファー サイズの Read を発行し、バックグラウンド ワーカー内で while ループを反復処理して、メイン UI スレッドをブロックしないようにすることはできますか? 完了したら、stringbuilder をメイン スレッドに戻します。
- コンテンツは StringBuilder に送られます。長さが利用可能な場合、ストリームのサイズで StringBuilder を初期化できますか?
これらは (あなたの専門的な意見では) 良いアイデアですか? Streams からコンテンツを読み取る際に、常に最後の数バイトか何かが失われるため、過去にいくつかの問題がありましたが、その場合は別の質問をします。