복붙노트

[HADOOP] 어쨌든 두 개의 avro 파일을 비교하여 데이터에 어떤 차이가 있는지 확인하십시오.

HADOOP

어쨌든 두 개의 avro 파일을 비교하여 데이터에 어떤 차이가 있는지 확인하십시오.

이상적으로, 나는 SAS proc처럼 포장 된 것을 원한다.

데이터 세트가 동등한 지 확인하기 위해 한 가지 방법을 찾았지만 꽤 비효율적입니다. 100 개의 행과 5 개의 열 (하나의 키와 4 개의 부동 함수)이있는 두 개의 avro 파일이 있다고 가정합니다. 테이블을 조인하고 데이터 세트의 일치하는 기능의 차이 인 새 변수를 만들면 0이 아닌 차이가 데이터에서 일부 불일치가됩니다. 거기에서 위의 요구 사항 전체 목록을 쉽게 결정할 수 있지만보다 효율적인 방법이있을 수있는 것처럼 보입니다.

해결법

  1. ==============================

    1.AVRO 파일은 스키마와 데이터를 별도로 저장합니다. 즉, 스키마 파일이 있어야하는 데이터가있는 AVRO 파일 옆에 일반적으로 * .avsc와 같은 의미입니다. 이렇게하면 작업을 세 부분으로 나눌 수 있습니다.

    AVRO 파일은 스키마와 데이터를 별도로 저장합니다. 즉, 스키마 파일이 있어야하는 데이터가있는 AVRO 파일 옆에 일반적으로 * .avsc와 같은 의미입니다. 이렇게하면 작업을 세 부분으로 나눌 수 있습니다.

    다음은 스키마의 예입니다.

    {"namespace": "example.avro",
     "type": "record",
     "name": "User",
     "fields": [
         {"name": "name", "type": "string"},
         {"name": "favorite_number",  "type": ["int", "null"]},
         {"name": "favorite_color", "type": ["string", "null"]}
     ]
    }
    
    {"namespace": "example.avro",
     "type": "record",
     "name": "User",
     "fields": [
         {"name": "name", "type": "string"},
         {"name": "favorite_number",  "type": ["int"]},
         {"name": "favorite_color", "type": ["string", "null"]},
         {"name": "test", "type": "int"}
     ]
    }
    

    결과는 다음과 같습니다.

    [localhost:temp]$ python compare.py 
    Field "test" exists in table2 and does not exist in table1
    Field "favorite_number" has type "[u'int', u'null']" in table1 and type "[u'int']" intable2
    

    이전에는 테이블에 대한 비교 함수를 개발했으며 일반적으로 다음과 같이 보입니다.

    일반적으로 그러한 기능의 개발 및 디버깅에는 영업일 기준 4-5 일이 소요됩니다.

  2. from https://stackoverflow.com/questions/26351017/is-there-anyway-to-compare-two-avro-files-to-see-what-differences-exist-in-the-d by cc-by-sa and MIT license