카테고리 보관물: 데이터처리

Google Cloud Engine IP 대역 알아내기

Google Cloud Engine (줄여서 이하 GCE)로부터 회사의 서비스에 발생시키는 기계적인 트래픽을 알아내기 위해서 GCE의 전체 IP대역을 알아내서 확인해 보려고 했는데 여기저기 검색해 본 결과 DNS lookup을 하면 되는 것을 알아냈습니다.

이렇게 하시면 됩니다.

명령의 결과는 밑에 있습니다.

많지 않은 것 처럼 보이지만 CIDR를 모두 풀어서 IP주소로 바꿔 놓으면 무지하게 많습니다. (구글 스케일. ‘ㅡ’;)

CIDR 형식으로 리턴되기 때문에 start, end 형식으로 바꾸시려면 Python을 사용하던지 해서 CIDR에서 Start IP와 End ip를 추출하면 됩니다. 시간이 되면 간단한 예제를 업데이트 해보겠습니다.

 

numpy windows용 64bit 버전

Windows를 비롯해서 numpy를 설치하는 것이 쉬운일이 아닌데요.
그래서 따로 패키징된 것을 제공하는 곳이 몇군데 있습니다.
그중 대표적인 곳이 scipy.org 입니다.
numpy는 scipy.org에서 패키징된 버전을 받을 수 있도록 링크를 추천하고 있는데
32bit 버전만 제공하고 있습니다.
32bit용 numpy를 64bit python에 설치하게 되면 python이 없다고 에러메세지가 나옵니다.

  • numpy는 python에서 수학/과학 계산을 위해서 사용하는 라이브러리입니다.
  • scipy를 사용하기 위해서는 numpy가 필요합니다.

아래 사이트에서 공유하고 있습니다.
접속해서 OS와 Python 버전에 맞는 것을 선택해서 다운로드해서 실행하면 쉽게 설치할 수 있습니다.

http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy

사이트의 반응 속도 및 다운로드 속도가 조금 느립니다.

Python multi core 구동 코드

Python을 이용해서 ETL의 일부인 파싱이나 전처리 작업을 수행하는 경우가 많습니다.
빅데이터인 경우에도 데이터를 Hadoop이나 Hive 또는 Oracle과 같은 RDBMS에 로딩하기 전에 할 수 있는 것들은 최대한 전처리를 한 후에 사용하는 경우가 많이 있습니다.
물론 데이터량이 아주 많으면 Map/Reduce를 작성하는 것이 더 낫습니다만 그리 크지 않은 데이터는 한 대의 서버에서 자원을 풀가동해서 처리해 버리는 것이 작업속도를 줄일 수 있습니다.
Hadoop이 일반화되기 이전에는 이런 형태의 코드를 더 구체화해서 여러 대의 서버에서 동시에 구동되도록 (마치 맵리듀스처럼) 프로세스를 돌리고 결과를 취합하는 것을 만드는 것이 빈번했었습니다.

https://gist.github.com/euriion/5719443

코드를 수정하면 더 복잡한 것도 할 수 있습니다만 매우 복잡하다면 다른 구조를 생각해 보는 것이 좋습니다.

CSV포맷을 TSV포맷으로 바꾸는 간단한 스크립트

엑셀(Excel)에서 CSV 포맷으로 파일을 저장할 때 텍스트 컬럼을 Escaping처리하는 경우가 있습니다.
주로 쉼표(comma)와 따옴표(double quotation)을 그렇게 변환해 버리는데 Hadoop이나 이 포팻을 Hive에 업로드해서 사용하려면 Escaping을 빼야 합니다.
크기가 크지 않은 CSV는 간단하게 Python으로 변환코드를 작성해서 올려서 사용하는 것이 편한데 그럴때 사용했던 소스코드입니다.
R에서 데이터를 로딩할 때도 이 방법이 편합니다.
이런 간단한 작업도 넓은 의미에서는 데이터 먼징 (Data Munging) 포함됩니다.

https://gist.github.com/euriion/5720809