StoryCode

'BigQuery, 빅쿼리'에 해당되는 글 1건

  1. BigQuery Data Format

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()

 

반응형