파이썬 & 오픈소스 개발 Tip과 강좌

이곳은 파이썬과 여러 오픈소스 기반 프레임워크 관련 Tip과 강좌 게시판 입니다. 관련 개발을 진행하면서 알아내신 Tip이나 강좌와 새로운 소식을 적어 주시면 다른 공부하는 분들에게 큰 도움이 됩니다. 감사합니다. SQLER.com은 개발자와 IT전문가의 지식 나눔을 실천하기 위해 노력하고 있습니다.

 

Spark, Parquet 파일 작업 중, Parquet 파일 내부의 meta data를 조회를 리뷰할 필요가 있어서 진행.

생각보다 많은 정보를 parquet의 meta 데이터에서 추출할 수 있었다. 

 

parquet 파일의 meta 정보 추출

 

관련 코드는 아래에서 전체 내용을 참조 가능.

pyspark-basic/parquet-metadata.ipynb at main · CloudBreadPaPa/pyspark-basic (github.com)

 

로드한 Parquet 파일에서 meta 정보 출력

parquet_file.metadata

결과

<pyarrow._parquet.FileMetaData object at 0x7f7e40589310>
  created_by: parquet-cpp-arrow version 4.0.1
  num_columns: 83
  num_rows: 9999
  num_row_groups: 1
  format_version: 1.0
  serialized_size: 19443

 

parquet_file.schema

결과

<pyarrow._parquet.ParquetSchema object at 0x7f7e404b73c0>
required group field_id=-1 schema {
  optional binary field_id=-1 MachineIdentifier (String);
  optional binary field_id=-1 ProductName (String);
  optional binary field_id=-1 EngineVersion (String);
  optional binary field_id=-1 AppVersion (String);
  optional binary field_id=-1 AvSigVersion (String);

...

 

parquet_file.metadata.row_group(0).column(3)

결과

<pyarrow._parquet.ColumnChunkMetaData object at 0x7f7e600f3b30>
  file_offset: 324387
  file_path: 
  physical_type: BYTE_ARRAY
  num_values: 9999
  path_in_schema: AppVersion
  is_stats_set: True
  statistics:
    <pyarrow._parquet.Statistics object at 0x7f7e600f3590>
      has_min_max: True
      min: 4.10.14393.0
      max: 4.9.218.0
      null_count: 0
      distinct_count: 0
      num_values: 9999
      physical_type: BYTE_ARRAY
      logical_type: String
      converted_type (legacy): UTF8
  compression: SNAPPY
  encodings: ('PLAIN_DICTIONARY', 'PLAIN', 'RLE')
  has_dictionary_page: True
  dictionary_page_offset: 317350
  data_page_offset: 317874
  total_compressed_size: 7037
  total_uncompressed_size: 8512

 

parquet_file.metadata.row_group(0).column(3).statistics

결과

<pyarrow._parquet.Statistics object at 0x7f7e600f3810>
  has_min_max: True
  min: 4.10.14393.0
  max: 4.9.218.0
  null_count: 0
  distinct_count: 0
  num_values: 9999
  physical_type: BYTE_ARRAY
  logical_type: String
  converted_type (legacy): UTF8

 

# check memory mapping
pq_array = pa.parquet.read_table(file_path, memory_map=True)
print("RSS: {}MB".format(pa.total_allocated_bytes() >> 20))

결과

RSS: 24MB

 

 

참고자료

pyspark-basic/parquet-metadata.ipynb at main · CloudBreadPaPa/pyspark-basic (github.com)

Reading and Writing the Apache Parquet Format — Apache Arrow v6.0.0

How to use pyarrow to view the metadata information inside a Parquet file | Open Knowledge Base (openkb.info)

No. Subject Author Date Views
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2021년 1월 업데이트) 코난(김대우) 2021.01.01 1066
123 Python code page 오류 해결 - UnicodeDecodeError: 'cp949' codec can't decode byte ____ in position [1] 코난(김대우) 2022.11.28 6
122 오픈소스 소통을 위한 Git 공부하기 | ep9. 클로징 | 애저 듣고보는 잡학지식 코난(김대우) 2022.11.15 20
121 오픈소스 소통을 위한 Git 공부하기 | ep8-2. 비주얼 스튜디오 코드로 쉽게 Git 사용하기 | 애저 듣고보는 잡학지식 코난(김대우) 2022.11.11 16
120 오픈소스 소통을 위한 Git 공부하기 | ep8-1. 비주얼 스튜디오 코드로 쉽게 Git 사용하기 | 애저 듣고보는 잡학지식 코난(김대우) 2022.11.09 18
119 오픈소스 소통을 위한 Git 공부하기 | ep7. 변경한 소스 반영을 요청하는 풀리퀘스트 | 애저 듣고보는 잡학지식 코난(김대우) 2022.11.05 7
118 오픈소스 소통을 위한 Git 공부하기 | ep6. 내 저장소에 소스를 푸시하기 위한 Fork | 애저 듣고보는 잡학지식 코난(김대우) 2022.11.02 18
117 오픈소스 소통을 위한 Git 공부하기 | ep5. 브랜치 (Branch) 이해하기 | 애저 듣고보는 잡학지식 코난(김대우) 2022.11.01 7
116 오픈소스 소통을 위한 Git 공부하기 | ep4. 변경 단위를 만들기 위한 Commit | 애저 듣고보는 잡학지식 코난(김대우) 2022.10.31 10
115 오픈소스 소통을 위한 Git 공부하기 | ep3. 소스를 가져오기 위한 Clone | 애저 듣고보는 잡학지식 코난(김대우) 2022.10.30 9
114 오픈소스 소통을 위한 Git 공부하기 | ep2. Git를 소개합니다 | 애저 듣고보는 잡학지식 코난(김대우) 2022.10.28 13
113 오픈소스 소통을 위한 Git 공부하기 | ep1. 버전 관리의 중요성 | 애저 듣고보는 잡학지식 코난(김대우) 2022.10.27 10
112 오픈소스 소통을 위한 Git 공부하기 | ep0. 인트로 | 애저 듣고보는 잡학지식 코난(김대우) 2022.10.24 26
111 Azure VM - 오픈소스 ROS Gazebo Web 설치 및 실행 file 코난(김대우) 2022.10.19 15
» parquet 파일의 meta 정보 추출 코난(김대우) 2021.11.16 775
109 embedded SQL - GlueSQL, rust 기반 오픈소스 프로젝트 file 코난(김대우) 2021.10.22 314
108 대규모 머신러닝 프로젝트 Serving에 사용되는 Python WAS, ASGI - uvicorn file 코난(김대우) 2021.10.06 562
107 Apache Arrow 리뷰 file 코난(김대우) 2021.10.05 1098
106 autopep8을 이용한 python 린트(linting) 구현 코난(김대우) 2021.09.15 307
105 Python에서 환경변수(environment variable) 처리 코난(김대우) 2021.09.15 134
104 Python에서 random 문자열이나 숫자 가져오는 방법 코난(김대우) 2021.09.15 339





XE Login