機械翻訳について

8 大きいデータ・セットを比較するために部品分類を使用

odiff(Oracle Distributed Diff)は、さまざまなロケーションに格納された大規模なデータセットを比較するユーティリティです。

odiffは分散Sparkアプリケーションとして実行されます。 「Cloudera分散Hadoop 5.7.x」と互換性があります。
  • HDFSとOracle Storage Cloud Serviceのみがサポートされています。

  • odiffが2つのオブジェクトを比較すると、データはダウンロードされません。 セグメント・チェックサムのみが比較されます。 オブジェクトが等しいがサイズの異なるセグメントがある場合、それらは異なるオブジェクトとして評価されます

  • 比較するブロックのデフォルト・サイズは128 MBです。

  • 比較する最小ブロック・サイズは5 MBです。 最大値は2GBです。

odiffリファレンス

以下で説明するように、コマンド行でodiffを使用します。

構文

/usr/bin/odiff [OPTIONS] directory_or_file_1 directory_or_file_2

where

directory_or_fileは、file:///tmp/diff/originalFiles(ディレクトリ)やfile:///tmp/diff/originalFiles/file-b.txt(ファイル)など、パスで修飾されたディレクトリまたはファイルです。

環境変数(オプション)

デフォルトでは、odiffcore-site.xmlで構成された最初のプロバイダを使用します。 core-site.xmlに複数のプロバイダが含まれている場合、PROVIDER_NAME環境変数を宣言することによって、どちらを使用するかを指定できます。

環境変数をエクスポートすることができます...

# export PROVIDER_NAME="some_value" /usr/bin/odiff [OPTIONS] path/file_1 path/file_2

...orそれを注入する:

# PROVIDER_NAME="some_value" /usr/bin/odiff [OPTIONS] path/file_1 path/file_2

オプション

オプション 使用

-b

--diffBlockSize

ファイル・ブロック・サイズをバイト単位で比較します。 Oracle Storage Cloud Serviceに格納されたファイルを比較するときは使用されません。

-d

--showDetails

詳細な出力を表示します。
--executor-cores エグゼキュータ・コアの数を指定します。 デフォルト値は5です
--executor-memory エグゼキュータのメモリー制限をGBで指定します。 デフォルト値は40です
--extra-conf 余分な構成オプションを指定します。例えば、--extra-conf spark.kryoserializer.buffer.max=128m

-h

--help

このヘルプ・テキストを表示します。
--krb-keytab プリンシパルのKerberosキータブへのフルパスを指定します。 Kerberos対応のSpark環境でのみ使用
--krb-principal Kerberosプリンシパルを指定します。 Kerberos対応のSpark環境でのみ使用してください。
--num-executors エグゼキュータの数を指定します。デフォルト値は3です。

-O

--output

出力ファイルを指定します。
--spark-home Sparkインストールを含むディレクトリへのパスを指定します。 このオプションが指定されていない場合、odiff/opt/cloudera directoryでそれを見つけようとします。
-V デバッギング用に冗長モードを有効にします。

使用例

/usr/bin/odiff hdfs:///user/oracle/data.raw swift://myContainer.myProvider/data.raw
/usr/bin/odiff swift://jmyContainer.myProvider/data.raw hdfs:///user/oracle/odcp-data.raw

3つ以上のノードがある場合は、より多くのエグゼキュータを指定して転送速度を上げることができます。 たとえば、6つのノードの場合、次のコマンドを使用します:

/usr/bin/odiff --num-executors=6 hdfs:///user/oracle/data.raw swift://myContainer.myProvider/data.raw

デバッグの場合、スイッチ-Vを使用して詳細モードを有効にすることができます:

/usr/bin/odiff -V swift://jmyContainer.myProvider/data.raw hdfs:///user/oracle/odcp-data.raw

制限:

/usr/bin/odiffは、クラスタの多くのリソースを消費します。 他のSpark/MapReduceジョブを並行して実行する場合は、--num-executors--executor-memory、および--executor-coresパラメータを使用して、エグゼキュータの数、エグゼキュータのメモリー、またはエグゼキュータのコアの数を減らす必要があります。

odiffの例

このトピックでは、odiffを使用してデータ構造を比較する、より拡張された例を検証します。

データ

次のような状況を考えてみましょう:

  • ディレクトリoriginalFilesからのファイルは、(odcp分散コピー・ツールを使用して)copiedFilesという名前のディレクトリにコピーされました。

  • コピー後、ユーザー

    • added originalFiles/file-b.txtへのテキストの数行

    • 「削除された」 originalFiles/file-c.txtのテキストの数行

    • modified originalFiles/file-d.txtの1バイトのテキスト 

    • copiedFilesディレクトリの「作成した」 .hiddenFile

その結果、ディレクトリとファイルは次のようになります:

originalFiles
    +-- file-a.txt     
    +-- file-b.txt     
    +-- file-c.txt     
    `-- file-d.txt     
 
copiedFiles
    +-- file-a.txt      (same as originalFiles/file-a.txt)
    +-- file-b.txt      (added few lines)
    +-- file-c.txt      (deleted few lines)
    +-- file-d.txt      (modified one byte)
    `-- .hiddenFile     (added)

残りのセクションは、上記のデータに対して実行された異なるodiff操作を示しています。

2つのファイルの比較(元とコピー)

odiffのパラメータ 出力 リターン・コード
file:///tmp/diff/originalFiles/file-a.txt
file:///tmp/diff/copiedFiles/file-a.txt

--diffBlockSize 104857600
Files file:///tmp/diff/originalFiles/file-a.txt and file:///tmp/diff/copiedFiles/file-a.txt are same. 0
file:///tmp/diff/originalFiles/file-a.txt
file:///tmp/diff/copiedFiles/file-a.txt
--diffBlockSize 104857600
--showDetails
Files file:///tmp/diff/originalFiles/file-a.txt and file:///tmp/diff/copiedFiles/file-a.txt are same. 0

2つのディレクトリを比較する(元のファイルとコピーされたファイルのあるものとの1つ)

odiffのパラメータ 出力 リターン・コード
file:///tmp/diff/originalFiles
file:///tmp/diff/copiedFiles
--diffBlockSize 104857600
Directories file:///tmp/diff/originalFiles and file:///tmp/diff/originalFiles are same. 0
file:///tmp/diff/originalFiles
file:///tmp/diff/copiedFiles
--diffBlockSize 104857600
--showDetails
Directories file:///tmp/diff/originalFiles and file:///tmp/diff/originalFiles are same. 0

2つの異なるファイルを比較

odiffのパラメータ 出力 リターン・コード
file:///tmp/diff/originalFiles/file-b.txt
file:///tmp/diff/copiedFiles/file-b.txt
--diffBlockSize 104857600
Files file:/tmp/diff/originalFiles/file-b.txt and file:/tmp/diff/copiedFiles/file-b.txt are different 1
file:///tmp/diff/originalFiles/file-b.txt
file:///tmp/diff/copiedFiles/file-b.txt
--diffBlockSize 104857600
--showDetails

Files file:/tmp/diff/originalFiles/file-b.txt and file:/tmp/diff/copiedFiles/file-b.txt are different.

Block#00000001: equals

Block#00000002: equals

Block#00000003: equals

Block#00000004: missing in revised file

1

2つの異なるディレクトリを比較

odiffのパラメータ 出力 リターン・コード
file:///tmp/diff/originalFiles 
file:///tmp/diff/copiedFiles 
--diffBlockSize 1048576

Found 1 same file(s), found 4 different file(s):

Files file:/tmp/diff/originalFiles/file-b.txt and file:/tmp/diff/copiedFiles/file-b.txt are different

Files file:/tmp/diff/originalFiles/file-c.txt and file:/tmp/diff/copiedFiles/file-c.txt are different

Files file:/tmp/diff/originalFiles/file-a.txt and file:/tmp/diff/copiedFiles/file-a.txt are same

Files file:/tmp/diff/originalFiles/file-d.txt and file:/tmp/diff/copiedFiles/file-d.txt are different

Files file:/tmp/diff/originalFiles/.hiddenFile and file:/tmp/diff/copiedFiles/.hiddenFile are different:

The original file file:/tmp/diff/originalFiles/.hiddenFile is missing

1
file:///tmp/diff/originalFiles
file:///tmp/diff/copiedFiles
--diffBlockSize 104857600
--showDetails

Found 1 same file(s), found 4 different file(s):

Files file:/tmp/diff/originalFiles/file-a.txt and file:/tmp/diff/copiedFiles/file-a.txt are same

Files file:/tmp/diff/originalFiles/file-d.txt and file:/tmp/diff/copiedFiles/file-d.txt are different

Block#00000001: different

Block#00000002: equals

Block#00000003: equals

Block#00000004: equals

Block#00000005: equals

Block#00000006: equals

Files file:/tmp/diff/originalFiles/file-b.txt and file:/tmp/diff/copiedFiles/file-b.txt are different

Block#00000001: equals

Block#00000002: equals

Block#00000003: equals

Block#00000004: missing in revised file

Files file:/tmp/diff/originalFiles/file-c.txt and file:/tmp/diff/copiedFiles/file-c.txt are different

Block#00000001: equals

Block#00000002: equals

Block#00000003: different

Files file:/tmp/diff/originalFiles/.hiddenFile and file:/tmp/diff/copiedFiles/.hiddenFile are different: Original file file:/tmp/diff/originalFiles/.hiddenFile is missing

1