전체 글 1383

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

Hive 투기적 실행(Speculative execution)

Hive 투기적 실행(Speculative execution) · Version : Hive Hive에서 투기적 실행(Speculative execution)이라 불리는 기능은 하나의 잡을 중복된 태스크로 구성하여 동시에 수행 시키는 하둡의 기능이다. 같은 데이터를 중복하여 복사하기 때문에 더 많은 리소스를 사용하며, 대부분의 데이터는 버려진다. 이 기능의 목적은 느리게 동직하는 태스크 트래커를 제거함으로써 개별 태스크의 결과가 더 빨리 도출되고 결과적으로 전체 잡 수행을 향상시키는데 있다. 즉, 동일한 태스크를 여러노드에서 실행함으로써, 특정 노드가 느리더라도 (장비 노후 또는 기타 문제로) 다른 노드에서 먼저 끝나면 해당 결과를 사용하고 나머지 노드는 중지 시킨다. 그래서 전체적으로는 수행시간이 단축..

Hive 자바 가상 머신 재사용

Hive 자바 가상 머신 재사용 · Version : Hive 하둡에서 맵리듀스 태스크를 실행하면 기본적으로 자바 가상 머신이 실행되고 그 위에서 맵 또는 리듀서 태스크를 실행한다. 하둡의 기본 설정은 일반적으로 포크(forked)된 자바 가상 머신을 사용한다. 자바 가상 머신은 가동할 때 오버헤드가 있기 때문에, 가상 머신의 재사용은 하이브 성능과 매우 밀접한 관계가 있다. 특히 작은 파일을 처리해야하는 경우나 태스크 수행시간이 짧은 작업의 경우 자바 가상 머신을 재사용하면 매우 효율이 좋다. 만약 수십, 수백번의 태스크를 가진 잡을 수행할때 자바 가상 머신 인스턴스를 재사용한다면 동일한 잡에 N번 재사용된다. 가상 머신의 재사용 설정은 하둡의 mapred-site.xml에서 설정할 수 있다. mapr..