분류 전체보기 1385

Python Multiprocessing(Process)을 사용한 데이터 처리 속도 개선

Python Multiprocessing(Process)을 사용한 데이터 처리 속도 개선 · Version : MAC OS, Python 3.X, PIP3 대용량 데이터를 효율적으로 처리하기 위해서는 병렬 처리를 활용하는것이 좋다. 파이썬에서 병렬처리를 제공하는 대표적인 라이브러리는 Threading과 Multiprocessing 모듈이다. Threading 모들은 파이썬의 GIL(Global Interpreter Lock)라는불리우는 잠금 모델을 사용하기 때문에I/O 작업이 아닌 CPU 작업이 많을 경우 오히려 성능이 저하된다. 이 방식은 Lock을 풀고 스레드를 교환하고 다시 Lock을 거는 형태의 멀티스레드이기 떄문이다. 파이썬에서는 Multiprocessing 를 권장하고 있으며, 이 모듈에는 대..

Python Multiprocessing(Pool)을 사용한 데이터 처리 속도 개선

Python Multiprocessing(Pool)을 사용한 데이터 처리 속도 개선 · Version : MAC OS, Python 3.X, PIP3 대용량 데이터를 효율적으로 처리하기 위해서는 병렬 처리를 활용하는것이 좋다. 대부분의 머신러닝/딥러닝에 사용되는 프레임워크들은 함수 내부에서 병렬처리가 가능하도록 설계되어 있기 때문에 시스템의 자원을 효율적으로 사용하지만, 일반적으로 많이 사용되는 데이터 가공 모듈인 pandas와 같은 모듈은 병렬처리를 기본적으로 제공하지 않기 떄분에 별도의 병렬처리가 가능하도록 코딩을 해야한다. 파이썬에서 병렬처리를 제공하는 대표적인 라이브러리는 Threading과 Multiprocessing 모듈이다. Threading 모들은 파이썬의 GIL(Global Interpr..

Python에서 Yahoo 주식 데이터 가져오기

Python에서 Yahoo 주식 데이터 가져오기 · Version : MAC OS, Python 3.X, PIP3 Yahoo Finance(https://finance.yahoo.com/) 에서 제공하는 API를 사용하여 Python에서 주식 데이터를 가져오는 방법에 대해서 알아본다. Yahoo Finance API는 종류가 다양하며 각 API에서 제공하는 데이터도 조금씩 다르다. 단순한 시계열 데이터 부터, 기업 재무제표를 제공하는 API등 다양하게 제공한다. 다양한 파이썬 패키지로 제공되고 있으며 아래 링크에서 확인할 수 있다. · yahoo-finance-api : https://github.com/topics/yahoo-finance-api?l=python 이번 포스트에서는 일일 주가 데이터를 제..

Python에서 Tesseract 사용하기

Python에서 Tesseract 사용하기 · Version : MAC OS, Python 3.X, PIP3 이전 포스트에서 Tesseract 오픈소스 소프트웨어를 사용하여 이미지에 포함된 문자열을 추출하는 방법에 대해서 알아 보았다. · Tesseract를 활용한 이미지 속 문자인식 : https://sungwookkang.com/1475 다른 포스트에도 언급한바 있지만, 이미지의 경우 배경 색상이나, 글꼴, 언어 타입에 따라 인식률에 차이가 크므로, 전처리 과정이 수반되어야 어느정도 정확도를 높일 수 있다. OpenCV등 오픈소스로 공개된 다양한 이미지 처리 모듈을 사용하기 위해서는 파이썬을 활용할 수 있는데, 그 시작으로 파이썬에서 Tesseract를 임포트하여 사용하는 방법을 설명한다. 이번 포스..

Tesseract를 활용한 이미지 속 문자인식

Tesseract를 활용한 이미지 속 문자인식 Tesseract는 이미지로부터 텍스트를 인식하고 추출하는 소프트웨어이며 HP 연구에서에서 개발된 오픈소스 OCR 엔진이다. 현재까지도 LSTM(Long short-term memory)과 같은 딥러닝 방식을 통해 텍스트 인식률을 지속적으로 개선하고 있다. Tesseract를 사용하기 위해서는 관련 프로그램을 설치 해야한다. 프로그램은 아래 주소에서 다운로드 받을 수 있다. · https://github.com/tesseract-ocr/tesseract/wiki 필자의 경우 MAC OS에서 설치를 진행하였으며 home brew를 사용하여 설치 하였다. brew install tesseract brew로 설치한 경우 아래 명령으로 설치된 경로를 확인할 수 있다..

Hive UDF (사용자 정의 함수)

Hive UDF (사용자 정의 함수) · Version : Hive Hive UDF(User Define Function, 사용자 정의 함수)는 사용자에게 HiveQL을 확장할 수 있게 해주는 하이브의 강력한 기능이다. 자바를 이용해 구현하며 한 번 세션에 추가되면 마치 내장 함수처럼 동작하고 심지어 온라인 도움말도 제공할 수 있다. UDF를 사용하면 하이브 쿼리가 동작하는 동일한 프로세스 안에서 마치 태스크처럼 돌아간다. 그러므로 효과적으로 동작하고 다른 시스템과의 통합 과정에서 발생하는 복잡함을 제거할 수 있다. 현재 하이브 세션에 로드된 내장함수는 SHOW FUNCTIONS 명령어를 사용하여 목록을 확인할 수 있다. hive>show functions; 함수는 보통 자신을 설명하는 문서를 가지고 있..

Hive Thrift Service (쓰리프트 서비스)

Hive Thrift Service (쓰리프트 서비스) · Version : Hive Hive는 하이브 서버(Hive Server) 또는 하이브 쓰리프트(Hive Thrift)라 불리는 구성요소를 가지고 있다. 쓰리프트는 확장성과 서로 다른 언어간에 통신이 가능한 소프트웨어 프레임워크이다. 이 구성요소를 통해 클라이언트는 하나의 포트(Port)로 하이브에 접근할 수 있다. CLI는 하이브를 접근하는 가능 일방적인 방식이다. CLI는 모든 하이브 구성요소 및 설정이 로컬에 복사본으로 존재해야만 동작한다. 마찬가지로 하둡 클리아언트와 하둡 설정도 있어야 한다. 하이브 CLI는 HDFS 클라이언트, 맵리듀스 클라이언트, JDBC 클라이언트(메타스토어 접속용)로 동작한다. 하이브 서비스는 쓰리프트를 이용한다. ..

Hive 보안 및 인증, 권한 부여

Hive 보안 및 인증, 권한 부여 · Version : Hive 하둡은 보안강화를 위해 커버로스(Kerberos)인증을 지원한다. 커버로스 인증은 서버와 클라이언트 간의 상호 인증을 지원한다. 더이상 hadoop. job.ugi 속성을 설정하여 다른 사용자인척 할 수 없다. 하지만 이렇게 동작하려면 모든 하둡 구성요소는 커버로스 보안을 양쪽 끝에서 지원해야한다. 모든 하둡 에코 시스템이 커버로스 인증을 지원 못하듯이, 하이브 인증도 완전하지 않다. 하이브는 메타스토어에 접속하기 위해서 JDBC 데이터베이스 연결을 사용하거나 사용자를 대신해서 동작을 수행하는 쓰리프트를 사용한다. 쓰리프트 기반의 하이브 서비스 역시 다른 사용자인척 해야한다. 한 소유자와 그룹이 한 파일에 대한 소유권을 갖는 하둡의 파일 ..

Hive 잠금(lock)

Hive 잠금(lock) · Version : Hive HiveQL은 SQL과 유사하지만 잠금(locking)에 대한 메커니즘은 완전히 다르다. SQL과 비교한다면 매우 부족한 lock 모델을 가지고 있다. 하둡이 제한된 의미의 이어쓰기 (append)를 지원하고 있지만 전통적으로는 write-once(한번쓰면 변경이 불가능하다는 의미) 의 특성을 가지고 있기 때문에 이러한 특성과 맵리듀스의 스트리밍 읽기 방식으로 인해 세밀한 잠금에 대한 접근은 불필요하기 때문이다. 그러나 하둡은 다중 사용자 시스템이기 때문에 잠금과 코디네이션이 필요할수도 있다. 예를들어 INSERT OVERWRITE 쿼리는 테이블의 모든 내용을 덮어쓰고 다른 사용자가 동시에 테이블에 쿼리를 시도하면 쿼리가 실패하거나 잘못된 결과를 반..

MySQL InnoDB Buffer Pool Resizing Online

MySQL InnoDB Buffer Pool Resizing Online · Version : MySQL 5.7.5, 8.0 MySQL 5.7.5 부터 InnoDB 버퍼풀의 크기를 서비스 가동중에도 동적으로 조절할 수 있다. 동적으로 버퍼풀 확대 또는 축소를 제공하기 위해 청크 크기를 정의하는 새로운 변수인 innodb_buffer_pool_chunk_size 가 도입되었으며, 이 변수는 동적이 아니며 잘못 구성되면 원하지 않는 상황이 발생할 수도 있다. 아래 그림은 innodb_buffer_pool_size, innodb_buffer_pool_instances , innodb_buffer_pool_chunk_size가 상호작용하는 방식을 나타낸것이다. 버퍼풀은 여러 인스턴스를 보유할 수 있으며 각 인스..

MySQL, MariaDB 2020.10.21