0

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

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

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

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

4

4 に答える 4

2

私はHadoopで大きなXMLファイルをかなり定期的に処理しています。domのような方法でレコードを操作できるため、これが最善の方法であることがわかりました(唯一の方法ではありません...もう1つはSAXコードを記述することです)。

これらの大きなファイルでは、マッパー出力で圧縮を有効にする必要があることを覚えておいてください。Hadoop、マッパー出力を圧縮する方法ですが、レデューサー出力は圧縮しません...これにより、処理速度が大幅に向上します。 。

これらすべてをどのように処理したかについての簡単な概要を書きました。おそらくそれが役立つでしょう:http://davidvhill.com/article/processing-xml-with-hadoop-streaming。私はPythonとEtreesを使用しているので、物事が本当に簡単になります。

于 2012-09-07T16:28:14.523 に答える
0

SAXparserについてはわかりません。ただし、十分なデータノードを備えたHadoopクラスターがある場合は、間違いなくHadoopが機能します。クラスター上の300GBを超えるデータに対して操作を実行していたため、50Gbは何もありません。Javaでマップリデュースジョブを記述します。hadoopのドキュメントはhttp://hadoop.apache.org/にあります。

于 2012-02-24T11:14:50.547 に答える
0

XMLファイルごとに1つのマッパーを使用して、HadoopでXMLを処理するのは非常に簡単です。このアプローチは、比較的小さなXMLが多数ある場合に適しています。

問題は、あなたの場合、ファイルが大きく、その数が少ないため、Hadoopを分割しないとメリットが制限されることです。hadoopのオーバーヘッドを考慮すると、メリットはマイナスになります... hadoopでは、大きなファイルを効率的に処理するために、入力ファイルを論理部分に分割できる必要があります(分割と呼ばれます)。一般に、XMLは、独立して処理できるブロックへの明確に定義された分割がないため、「分割可能な」形式のようには見えません。同時に、XMLに何らかの「レコード」が含まれている場合は、分割を実装できます。
haoopでのXMLの分割についての良い議論はここにあります:http://oobaloo.co.uk/articles/2010/1/20/processing-xml-in-hadoop.htmlここ MahoutのXML入力フォーマットが提案されています。

あなたのケースに関して-あなたのファイルの数があなたが単一のシステム上に持っているコアの数よりもそれほど大きくない限り-hadoopは効率的な解決策ではないでしょう。
同時に、時間をかけて蓄積したい場合は、スケーラブルなストレージとしてHadoopから利益を得ることができます。

于 2012-02-24T12:08:50.000 に答える
0

SAXは伝統的に大きなXMLファイルの処理に誤って関連付けられてきたと思います...実際には、VTD-XMLが最良のオプションであり、パフォーマンス、柔軟性、コードの可読性、保守性の点でSAXよりもはるかに優れています...メモリのVTD-XMLのメモリ内モデルは、対応するXMLドキュメントのサイズのわずか1.3x〜1.5Xです。

VTD-XMLには、SAXに比べてもう1つの大きな利点があります。それは、比類のないXPathサポートです。そのため、VTD-XMLユーザーは、数百MBのXMLファイルを解析するSAXの10〜60倍のパフォーマンス向上を日常的に報告しています。

http://www.infoq.com/articles/HIgh-Performance-Parsers-in-Java#anch104307

Javaの既存のXML解析フレームワークを包括的に比較するこのペーパーをお読みください。

http://sdiwc.us/digitlib/journal_paper.php?paper=00000582.pdf

于 2016-04-30T06:25:30.393 に答える