본문 바로가기

전체 글42

[Spark] json -> parquet로 저장시 스키마 충돌 문제 해결 목적 json으로 저장된 파일을 partition을 추가하여 parquet로 저장하려한다. 이때, json 내에 빈 array가 있을 경우 inferSchema로 인해 array(string)의 스키마로 표현된다. 이 경우 다른 파일에서 array내에 struct 등의 다른 값이 들어올 경우 에러가 발생한다. pre-defined된 schema가 있다면 좋겠으나 필자의 경우는 그렇지 못하였다. 필자에게 발생한 에러메시지는 아래와 같다. java.lang.ClassCastException: optional binary element (UTF8) is not a group at org.apache.parquet.schema.Type.asGroupType(Type.java:207) at org.apache.s.. 2021. 10. 6.
[Postgresql] 테이블 DDL 확인하기 목적 Postgresql에는 show create 문이 존재하지 않는다. ddl을 확인하는 방법을 알아보자. 과정 postgresql에서는 ddl을 확인하기위해 pg_dump를 이용해야 한다. 아래의 커맨드를 입력하여 ddl을 확인한다. pg_dump -h ${hostname} -U ${username} -t '${schemaname}.${tablename}' --schema-only ${dbname} 더 필요한 옵션이 있다면 pg_dump --help를 입력하여 옵션을 확인한다. 2021. 9. 14.
[Postgresql] Postgresql13 rpm으로 설치 목적 필자의 경우 yum으로 설치한 postgre는 remote와 버전이 맞지 않아 pg_dump등의 작업이 가능하지 않았다. 로컬 테스트 환경도 만들겸 겸사겸사 postgresql 13.3 버전을 설치하고자 한다. 과정 필자의 경우 13.3버전을 설치하여야 했다. Postgresql의 다운로드 사이트에 들어가 원하는 os를 선택한다. 필자의 경우는 linux기반의 설치를 해야했기에 linux >> Red Hat / Rocky/CentOS를 선택했다. 필자는 yum으로 설치가 안되어 최하단의 Direct RPM download를 이용하였다. 붉은 "direct download"를 선택하자. 다음 화면에서 POSTGRESQL13 >> RHEL/CentOS/Oracle Linux 7 - x86_64를 선택했.. 2021. 8. 27.
[Spark] JSON string 파싱하기 목적 spark에서 json data source를 이용할 경우 json이 newline으로 구분되어있어야 json이 제대로 인식된다. 필자가 이용하는 데이터의 경우 아래와 같이 newline이 제대로 입력되어있지 않았다. {"a":"b"}{"a":"c"}{"a":"d"}{"b":"e"}... 이럴 때에 써먹을만한 간단한 파이썬 함수를 기록한다. 내용 import re import json def json_splitter(input_json): r = re.split('(\{.*?\})(?= *\{)', input_json) accumulator = '' res = [] for subs in r: accumulator += subs try: json_dict = json.loads(accumulator).. 2021. 8. 26.
반응형