Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 그래프 생성 문법
- max
- loop 문
- 히스토그램 그리기
- Intersect
- 단순회귀 분석
- Dense_Rank
- 불순도제거
- count
- 정보획득량
- 순위출력
- 여러 데이터 검색
- 상관관계
- merge
- sqld
- 회귀분석 알고리즘
- 빅데이터
- 데이터분석
- difftime
- 회귀분석
- 팀스파르타
- %in%
- 빅데이터분석
- 데이터분석가
- 막대그래프
- sql
- 그래프시각화
- Sum
- 총과 카드만들기
- if문 작성법
Archives
- Today
- Total
ch0nny_log
[빅데이터분석] Linux_4. 마리아 디비와 파이썬 연동, 리눅스 프로세서 관리명령어 본문
빅데이터 분석(with 아이티윌)/python
[빅데이터분석] Linux_4. 마리아 디비와 파이썬 연동, 리눅스 프로세서 관리명령어
chonny 2024. 9. 23. 15:16
😁 회사에 모든 데이터는 리눅스에 저장이 되어 있습니다.
리눅스에 database를 설치하고 database에서 SQL을 수행해서 데이터를 검색하고 분석을 합니다.
리눅스 → 데이터 베이스 → 파이썬(시각화, 데이터 분석)
(운영체제) (maria db) → 테블로(시각화)
※ 데이터 엔지니어의 역할?
- 데이터 파이프 라인 구축 (raw data → table)
- 리눅스 명령어와 파이썬, SQL 이용해 데이터 전처리를 함
📝 maria db 와 pathon 연동
#1. maria db 를 시작 시킵니다.
- mariadb 서버 시작 # systemctl start mariadb
#2. maria db 에 접속해서 테이블 조회를 합니다.
- mysql 를 root 계정으로 접속해본다. # mysql -u root -p MariaDB [(none)]> use orcl; MariaDB [orcl]> show tables; MariaDB [orcl]> select * from dept;
#3. maria db와 연동하기 위한 모듈을 설치합니다.
※ 리눅스 서버에서 직접 수행해야합니다. # su - oracle $ conda activate py389 $ jupyter notebook
#4. 주피터 노트북에서 연동 명령어를 실행합니다.
다음은 리눅스 oracle 유져에서 수행합니다. ※ 윈도우와 리눅스 간의 복사 붙여넣기를 자유롭게 하려면 vm 위의 메뉴에 장치에 클립보드 공유를 양방향, 드래그앤 드럽을 양방향으로 하면됩니다. $ conda activate py389 $ jupyter notebook 직접 주피터 노트북에서 바로 아래의 명령어를 실행합니다. pip install mysql-connector-python-rf
#5. 데이터 시각화를 해봅니다.
import mysql.connector config = { "user" : "scott", "password" : "tiger", "host" : "192.168.122.1", "database" : "orcl", "port" : "3306" } conn = mysql.connector.connect(**config) cursor = conn.cursor() sql = "select * from emp order by 1 desc" cursor.execute(sql) rows = cursor.fetchall() print(rows)
#6. 데이터 시각화 하기import pandas as pd emp = pd.DataFrame( list(rows) ) emp colname = cursor.description col = [] for i in colname: col.append( i[0].lower() ) emp = pd.DataFrame( list(rows), columns=col) emp a = emp.groupby('job')['sal'].sum().reset_index() a.plot.bar(x='job', y='sal')
★ (중요) 리눅스 기본 명령어. 자동화 스트립트 구성하기
#1. 먼저 아래의 내용을 메모장에서 작성합니다.
echo "1. 마리아 디비를 시작 시키고 싶다면 1번을 누룹니다. 2. 마리아 디비로 root 로 접속하고 싶다면 2번을 누룹니다. 3. 마리아 디비로 scott 으로 접속하고 싶다면 3번을 누룹니다. " echo -n "번호를 입력하세요" read choice case $choice in 1) systemctl start mariadb ;; 2) mysql -u root -p ;; 3) mysql -h 192.168.122.1 -u scott -p ;; esac
# 2. 위의 내용을 a.sh 에 저장합니다.
# vi a.sh # sh a.sh
password = tiger
#3. 위의 스크립트에 4번에 파이썬과 마리아 디비 연동 자동화 스크립를 추가합니다
echo "1. 마리아 디비를 시작 시키고 싶다면 1번을 누룹니다. 2. 마리아 디비로 root 로 접속하고 싶다면 2번을 누룹니다. 3. 마리아 디비로 scott 으로 접속하고 싶다면 3번을 누룹니다. 4. 파이썬 주피터 노트북을 띄우고 싶다면 4번을 누룹니다. " echo -n "번호를 입력하세요" read choice case $choice in 1) systemctl start mariadb ;; 2) mysql -u root -p ;; 3) mysql -h 192.168.122.1 -u scott -p ;; 4) su - oracle -c "source ~/.bashrc; conda activate py389; jupyter notebook" ;; esac
#4. 주피터 노트북을 직접 열었으면 아래의 파이썬과 maria db 를 연동하는 아래의 코드를 통채로 복사해서 붙여넣습니다.
import mysql.connector # 파이썬과 mysql 을 연동하기 위한 모듈을 임폴트 합니다. # 데이터 베이스의 정보를 config 딕셔너리에 담습니다. config = { "user": "scott", "password": "tiger", "host": "192.168.122.1", #local "database": "orcl", #Database name "port": "3306" #port는 최초 설치 시 입력한 값(기본값은 3306) } # 위의 데이터 베이스 정보를 가지고 접속을 합니다. conn = mysql.connector.connect(**config) # db에서 select, insert, update, delete 등의 작업을 할 수 있는 객체를 생성합니다. cursor = conn.cursor() # 실행할 select 문 구성 sql = "SELECT * FROM emp ORDER BY 1 DESC" # cursor 객체를 이용해서 수행한다. cursor.execute(sql) # select 된 결과를 rows 라는 변수에 넣습니다. rows= cursor.fetchall() # tuple 이 들어있는 list colname = cursor.description # 불러온 리스트에 컬럼명을 추출 col = [] for i in colname: col.append( i[0].lower() ) import pandas as pd emp = pd.DataFrame( list(rows), columns=col ) emp
📝공공데이터를 리눅스 서버에서 분석하기
#1. 서울시 소상공인 데이터를 리눅스 서버에 /root 밑에 올립니다.
1) 데이터 seoul.csv를 내려받아 리눅스에 올립니다.
# ls -1 seoul.csv
#2. 마리아 디비에 scott 유져로 접속해서 서울시 소상공인 데이터로 테이블을 생성
2 3 use orcl;
create table seoul (storecode varchar(10), store varchar(300), branch varchar(100), seg1code varchar(2), seg1name varchar(20), seg2code varchar(20), seg2name varchar(100), seg3code varchar(20), seg3name varchar(100), bizcode varchar(20), bizname varchar(100), citycode varchar(30), city varchar(30), guncode varchar(10), gun varchar(30), dong1code varchar(20), dong1 varchar(30), dong2code varchar(20), dong2 varchar(30), dgibuncode varchar(20), e1code varchar(20), e1name varchar(80), e2code varchar(20), e3code varchar(20), address1 varchar(300), streetcode varchar(50), street varchar(300), buidingcode1 varchar(50), buidingcode2 varchar(50), buidingcode3 varchar(50), building varchar(100), address2 varchar(300), zipcode1 varchar(50), zipcode2 varchar(50), donginfo varchar(50), floor varchar(20), hoinfo varchar(20), longitude varchar(50), latitude varchar(50) );
LOAD DATA LOCAL INFILE '/root/seoul.csv' REPLACE INTO TABLE orcl.seoul fields TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES (storecode,store,branch,seg1code,seg1name,seg2code,seg2name,seg3code,seg3name,bizcode,bizname,citycode,city,guncode,gun,dong1code,dong1,dong2code,dong2,dgibuncode,e1code,e1name,e2code,e3code,address1,streetcode,street,buidingcode1,buidingcode2,buidingcode3,building,address2,zipcode1,zipcode2,donginfo,floor,hoinfo,longitude,latitude);
select count(*) from seoul;
#3. SQL을 이용해서 데이터를 분석 합니다.
1) 서울시에는 스타벅스 매장이 총 몇개가있나요?
select count(*) from seoul where store like '%스타벅스%';
2) 서울시에 구별로 스타벅스 매장수를 다음과 같이 출력하시오.
2-1) 테이블 구조확인하기
2-2) 코드 실행describe seoul;
select gun, count(*) as cnt from seoul where store like '%스타벅스%' group by gun order by cnt desc;
#4. 파이썬을 연동해서 시각화 합니다.
(centos에서 파이썬 쥬피터 연동해서 해야함)
1) 위코드를 마리아 연동 코드로 실행
# 위의 데이터 베이스 정보를 가지고 접속을 합니다. conn = mysql.connector.connect(**config) # db에서 select, insert, update, delete 등의 작업을 할 수 있는 객체를 생성합니다. cursor = conn.cursor() # 실행할 select 문 구성 sql = """select gun, count(*) as cnt from seoul where store like '%스타벅스%' group by gun order by cnt desc""" # 세미콜론이 있으면 안됨 # cursor 객체를 이용해서 수행한다. cursor.execute(sql) # select 된 결과를 rows 라는 변수에 넣습니다. rows= cursor.fetchall() # tuple 이 들어있는 list colname = cursor.description # 불러온 리스트에 컬럼명을 추출 col = [] for i in colname: col.append( i[0].lower() ) import pandas as pd result= pd.DataFrame( list(rows), columns=col ) result
2) 시각화 하기 (한글 안꺼지게)
import mysql.connector # 파이썬과 mysql 을 연동하기 위한 모듈을 임폴트 합니다. # 데이터 베이스의 정보를 config 딕셔너리에 담습니다. config = { "user": "scott", "password": "tiger", "host": "192.168.122.1", #local "database": "orcl", #Database name "port": "3306" #port는 최초 설치 시 입력한 값(기본값은 3306) } # 위의 데이터 베이스 정보를 가지고 접속을 합니다. conn = mysql.connector.connect(**config) # db에서 select, insert, update, delete 등의 작업을 할 수 있는 객체를 생성합니다. cursor = conn.cursor() # 실행할 select 문 구성 sql = """ select gun, count(*) as cnt from seoul where store like '%스타벅스%' group by gun order by cnt desc """ # cursor 객체를 이용해서 수행한다. cursor.execute(sql) # select 된 결과를 rows 라는 변수에 넣습니다. rows= cursor.fetchall() # tuple 이 들어있는 list colname = cursor.description # 불러온 리스트에 컬럼명을 추출 col = [] for i in colname: col.append( i[0].lower() ) import pandas as pd import matplotlib.pyplot as plt from matplotlib import font_manager, rc plt.rcParams['font.family']='NanumGothic' result = pd.DataFrame( list(rows), columns=col ) result.plot.bar( x='gun', y='cnt', color='skyblue' )
📝리눅스 프로세서 관리 명령어
갑자기 리눅스가 엄청 느려질 때 원인을 파악하기 위해서 필요함
-> 지금 큰 데이터를 조회하거나 입력하는 작업중인데 이 작업이 잘 진행 되고 있는지 아니면 락에 걸려서 멈춘건지 확인할 때 필요함
※ 리눅스 프로세서 관리 명령어
1. top
2. kill 명령어
3. ps 명령어
4. jobs 명령어
■ top 명령어
- 지금 현재 작동중인 프로세서들의 cpu 사용률과 메모리 사용률을 확인하는 명령어
예제
# top
문제1. 악성 sql을 날리면 cpu가 어떻게 되는지 확인하시오.
■ kill 명령어
- 특정 프로세서를 강제로 종료 시키는 명령어
문제1. 위의 cpu가 너무 많이 쓰이므로 다른 터미널 창을 열고 cpu 과열된 곳을 강제 다운 시키시오
kill -9 5336
설명: -9는 강제로 죽이겠다는 뜻임
※ 죽이기 전에 어떤 작업을 하고 있는 유저인지 확인하고 죽이는게 바람직함.
■ ps명령어
- 현재 시스템에서 수행되고 있는 프로세서의 정보를 표시하는 명령어
예제.
# ps <- 옵션 프로세서 번호 # ps -p 1449
문제.
1. mySQL로 scott 유저로 접속하시오
2. emp 테이블을 10번 조인하는 sql을 수행합니다.
3. 별도의 터미널 창에서 top 명령어를 수행합니다.
4. top 명령어로 확인한 프로세서 번호로 해당 프로세서의 정보를 확인 후 죽이시오.
'빅데이터 분석(with 아이티윌) > python' 카테고리의 다른 글
[빅데이터분석] Python_59. 파이썬으로 홈페이지 만들기 (0) | 2024.09.12 |
---|---|
[빅데이터분석] Python_58. Kaggle 실습 & 업로드 (0) | 2024.09.11 |
[빅데이터분석] Python_57. 파이썬과 오라클, mySQL(Maria) (8) | 2024.09.11 |
[빅데이터분석] Python_56. 판다스 머신러닝 6.(z검정 통계, 정규검정, 단측검정, 가설검정, anova분석, 비모수 검정,카이제곱 검정 ) (0) | 2024.09.10 |
[빅데이터분석] Python_55. 판다스 머신러닝5.(랜덤 포레스트 , 수치예측) (3) | 2024.09.10 |