BigQuery Data Format
BigQuery, 빅쿼리반응형
CSV
Parquet
CSV | 1) 보통 csv 는 1 Row 에 다수개의 Column 을 배열 | |
Parquet ( 파케이 ) | 1) 캍은 칼럼부터 데이터 배열 2) 특정 컬럼에 동일한 텍스트가 많이 있다면 그 텍스트를 코드로 만들어 메타데이타에 등록후, 데이타에는 텍스트에 해당하는 코드값만 저장. 즉 용량이 많이 줄어들음. 3) 2)의 확장으로, 완벽하게 동일하지는 않지만 앞은 동일하고 뒤만 다르다면, 다른 부분만 기록함. 4) 이렇게 하여 csv 를 압축해보면 1/7 정도로 압축묀다. 일반 압축이 1/4 ~ 1/5 인것을 비교하면, Parquet 가 상당히 잘 압축되는 것으로 보인다. Parquet 를 넘어서는 압축은 7z를 최고압축 모드로 했을 때 뿐이었다. 5) csv를 python 의 pyarrow 로 간단하게 Parquet 로 변환 가능하다. |
|
avro | 1) 테이블 Create 문 같은 걸 만든다. ex> Person 이라는 테이블 스키마는 name string 과 age int 로 구성되어 있다. schema_json = """ { "type": "record", "name": "Person", "fields": [ {"name": "name", "type": "string"}, {"name": "age", "type": "int"} ] } 2) json Data를 Write 할 수 있다. person_data = { "name": "John", "age": 30 } # 데이터 직렬화 writer = datafile.DataFileWriter(open("person.avro", "wb"), io.DatumWriter(), avro_schema) writer.append(person_data) writer.close() 3) avro 를 다시 읽을 수 있다. 역직렬화. # 데이터 역직렬화 reader = datafile.DataFileReader(open("person.avro", "rb"), io.DatumReader()) for person in reader: print(person) reader.close() |
반응형