일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데이터분석
- 빅데이터
- 팀스파르타
- 상관관계
- 여러 데이터 검색
- 불순도제거
- 그래프 생성 문법
- sqld
- if문 작성법
- Intersect
- 그래프시각화
- 회귀분석
- sql
- max
- 순위출력
- difftime
- %in%
- merge
- 회귀분석 알고리즘
- loop 문
- Dense_Rank
- 막대그래프
- 데이터분석가
- 단순회귀 분석
- Sum
- count
- 히스토그램 그리기
- 빅데이터분석
- 정보획득량
- 총과 카드만들기
- Today
- Total
ch0nny_log
[빅데이터분석] Linux_2. 리눅스 함수 및 maria db 설치 본문
- 지난주에 배웠던 리눅스 명령어
- cd 명령어
- mkdir 명령어
- cat 명령어
- grep 명령어
- awk 명령어
복습문제1. 직업이 analyst인 사원들의 이름과 월급, 직업을 출력하기
awk -F ',' '$3 =="ANALYST" {print $2,$6,$3}' emp.csv
설명 : -F 구분자
복습문제2. 1981년도에 입사한 사원들의 이름과 입사일을 출력하기
설명 : substr($컬럼번호, 시작자리 인덱스 번호, 끝자리 인덱스 번호)awk -F ',' '$3 =="ANALYST" {print $2,$6,$3}' emp.csv
복습문제 3. 이름의 첫 글자가 A로 시작하는 사원들의 이름과 월급을 출력하기
awk -F ',' 'substr($2, 1, 1) == "A" {print $2, $6}' emp.csv
복습문제 4. 위의 결과를 result_a_ename.csv 로 저장하기
awk -F ',' 'substr($2, 1, 1 ) =="A" {print $2, $6}' emp.csv >> result_a_ename.csv cat result_a_ename.csv
📝6. sort 명령어
- data 를 특정 컬럼을 기준으로 정렬하는 명령어
예제 . emp.txt 에서 이름과 월급을 출력하는데 월급이 낮은 사원부터 출력하기
cat emp.txt <-- 콤마가 아니라 공백으로 컬럼과 컬럼이 분리되어 있음 sort -nk 6 emp.txt # 월급이 낮은 사원부터 출력 sort -nrk 6 emp.txt # 월급이 높은 사원부터 출력
n 은 숫자 정렬할때 사용하는 옵션 -r 은 정렬을 높은것부터 출력할 때 사용하는 옵션 -k 는 어느 컬럼을 정렬할지 번호를 출력할 때 사용하는 옵션
빅데이터 ---> 리눅스 서버 ---> 오라클 ------> 판다스 ↓ ↓ ↓ ↓ 음식재료 크게 칼질 잔잔한 칼질 요리
데이터 엔지니어 데이터 분석가
문제 1. emp.txt 에서 직업이 SALESMAN 인 사원들의 이름과 월급을 출력하는데 월급이 높은 사원부터 출력하기
awk '$3=="SALESMAN" {print $2, $6}' emp.txt | sort -nrk 2
설명: 이전 명령어 | 이후 명령어 ↑ 파이프(pipe)
파이프 이전 명령어의 결과를 파이프 이후 명령어의 입력으로 보낸다.
문제 2. emp.txt 에서 월급이 1200 이상인 사원들의 이름과 입사일을 출력하는데 최근에 입사한 사원부터 출력하기
awk '$6 >= 1200 { print $2, $5 }' emp.txt | sort -rk 2
📝7. uniq 명령어
- 중복된 라인을 제거하는 명령어
- 문법: # uniq 옵션 파일명
예제. emp.txt에서 직업만 출력하는데 중복을 제거해서 출력하기
1. 직업만 출력하기
awk -F '' '{print $3}' emp.txt
2. 위의 결과를 내림차순으로 정렬
3. 중복 제거awk -F '' '{print $3}' emp.txt | sort -k 1
※ 정렬해서 같은것 끼리 모아놓고 중복을 제거해야함awk -F '' '{print $3}' emp.txt | sort -k 1 | uniq
문제 1. 부서번호를 출력하는데 중복을 제거해서 출력하시오 !
awk -F ' ' '{print $8}' emp.txt | sort -k 1 | uniq
문제 2. emp.txt 에서 부서번호가 20번인 사원들의 직업을 출력하는데 중복을 제거해서 출력하기
awk -F ' ' '$8==20 {print $3}' emp.txt | sort -k 1 | uniq
📝 8. diff 명령어
- 두 파일간의 차이점을 찾아서 알려주는 명령어
예제.
1. 파일이 똑같은게 2개가 있어야해서 emp.csv 를 emp200.csv 로 복사하기
cp emp.csv emp200.csv ls -l *.csv cat emp200.csv
2. emp.csv 와 emp200.csv 의 차이가 있는지 확인하기
차이가 없기 때문에 아무것도 나오지 않음diff emp.csv emp200.csv
문제 1. emp200.csv 의 내용을 gedit으로 수정하기
저게 무지개빛으로 활성화 되어있어야 수정 가능
문제 2. emp.csv 와 emp200.csv 의 차이를 확인하기
diff emp.csv emp200.csv
※ 원본과의 비교가 중요한 이유?
데이터의 차이를 확인함으로써 정확한 데이터 분석을 할 수 있게 됨
문제 3. emp200.csv 에서 ALLEN 의 데이터 행을 지우고 저장하기
gedit emp200.csv
ALLEN의 행을 지우고 저장
문제 4. emp.csv 와 emp200.csv의 차이를 확인하기
diff emp.csv emp200.csv
📝 9. find 명령어
- 검색하고자 하는 파일을 찾을 때 사용하는 명령어
- 문법 : #find 디렉토리 -name 파일명 -print
- ^ 검색할 디렉토리 ^ 검색할 파일명
예제
find /root -name 'emp.csv' -print
문제1. /root 디렉토리 밑에 emp 로 시작하는 파일들을 조회하기
find /root -name 'emp*' -print
문제 2. /root 디렉토리 밑에 kkk 라는 디렉토리를 생성하기
설명: ls 는 list 의 약자로 조회하겠다는것이고 -ld 는 옵션으로 디렉토리를 조회하겠다는 것입니다.pwd mkdir kkk ls -ld kkk
문제 3. /root 밑에 있는 emp200.csv 를 /root/kkk 밑에 이동시키기
mv /root/emp200.csv /root/kkk/emp200.csv
설명 : mv는 move의 약자.
mv 옮기기 전 디렉토리와 파일명 옮긴후 디렉토리와 파일명
문제 4. /root 밑에 epwdmp200.csv 가 있는지 조회하기
find /root -name 'emp200.csv' -print
문제 5. /root 밑에 emp.txt 를 /root/kkk 밑에 복사하기
cp /root/emp.txt /root/kkk/emp.txt
문제 6. /root 밑에 emp.txt 가 있는지 조회하기
find /root -name 'emp.txt' -print
문제 7. /root 에 있는 emp.txt만 조회하기
find /root -maxdepth 1 -name 'emp.txt' -print
1이라고 하면 root 바로 밑의 것만
2라고 하면 kkk 밑의 것도 조회됨
📝 10. sed 명령어
- grep 명령어가 파일의 특정 내용을 검색하는 기능을 갖는다면
- sed 명령어는 검색뿐만 아니라 내용을 변경해서 보여주는 명령어
예제.
cd ls -l emp.csv sed 's/KING/yyy/g' emp.csv
위의 명령어는 KING 의 이름을 yyy로 변경해서 보여달라는 것이지 실제로 변경된것은 아님
문제 1. 위의 결과를 result100.csv 로 저장하기
sed 's/KING/yyy/g' emp.csv >> result100.csv cat result100.csv
문제 2. (데이터 엔지니어 업무인 데이터 파이프라인 구축) 미국 영화 평점 데이터를 리눅스 서버에 올리기
https://cafe.daum.net/oracleoracle/SDMs/412
- 데이터 관련 교육의 데이터 게시판 412 번 게시글
- 압축 풀고 파일들을 전부 리눅스 서버에 올리기
ls -lrt
- 이 파일들을 전처리해서 database에 입력하고, 파이썬과 연동해서 시각화와 데이터 분석을 할 예정
- 데이터 전 처리는 리눅스 명령어로 해줘야함
- 확장자가 특이한 파일들이 있는데, 이 파일들의 데이터를 잘 검색하려면 데이터 전처리를 잘 해줘야함
문제 3. (데이터 엔지니어 업무인 데이터 파이프 라인 구축2) movies.dat 파일의 전체 행수가 몇건인지 출력하기
wc -l movies.dat #3883
문제 4. (데이터 엔지니어 업무인 데이터 파이프 라인 구축3) movies.dat 파일의 위의 3줄만 출력하기
head -3 movies.dat
번호 :: 제목 :: 장르
데이터와 데이터 사이의 구분자가 콤마가 아니라 ::임
위의 데이터를 mySQL 데이터 베이스에 테이블로 구성하려면 ::를 콤마로 변경해서 저장해야함
문제 5. sed 명령어를 이용해서 구분자 콜론2개(::)를 콤마(,)로 변경해서 movies_comma.csv로 저장하기
sed s/::/,/g movies.dat >> movies_comma.csv head -10 movies_comma.csv
문제 6. (데이터 엔지니어 업무인 데이터 파이프 라인 구축) ratings.dat 의 전체 행이 몇건인지 출력하기
wc -l ratings.dat #1000209
문제 7. (데이터 엔지니어 업무인 데이터 파이프 라인 구축) ratings.dat 의 상위 3개 행만 출력하기
head -3 ratings.dat
문제 8. (데이터 엔지니어 업무인 데이터 파이프 라인 구축) ratings.dat 의 ::를 콤마로 변경해서 ratings_comma.csv로 저장하기
sed s/::/,/g ratings.dat >> ratings_comma.csv head -10 ratings_comma.csv
문제 9. (데이터 엔지니어 업무인 데이터 파이프 라인 구축) users.dat 파일도 위와 같이 전처리해서 users_comma.csv로 저장하고 head 명령어로 위의 3줄을 출력하기
유저 id :: 성별 :: 나이 :: 직업번호 :: 우편번호
head -3 users.dat sed s/::/,/g users.dat >> users_comma.csv head -3 users_comma.csv
📝 11. cp 명령어
- 파일을 복사하는 명령어
예제.
cp 파일명 복사할 파일명 cp 위치/파일명 위치/복사할 파일명 cp emp.csv emp1000.csv cp /root/emp.csv /root/kkk/emp2000.csv
문제 1. /root 밑에 test_data 라는 폴더를 만들고 여기 /root 밑에 있는 emp.csv를 복사하기
[root@localhost ~]# cd [root@localhost ~]# [root@localhost ~]# whoami root [root@localhost ~]# mkdir test_data [root@localhost ~]# [root@localhost ~]# cp /root/emp.csv /root/test_data/emp.csv
※중요!! 내가 가지고 있는 파일들 중에 중요도가 높은 데이터는 반드시 cp 명령어로 백업하기
📝 1 2. rm 명령어
- rm 명령어는 파일이나 디렉토리를 삭제하는 명령어
- 정말 신중하게 수행해야함
예제. /root 밑의 emp.csv 파일을 삭제해보기
cd pwd ls -l emp.csv rm emp.csv ls -l emp.csv
# 원상복구하기#원상복구 [root@localhost ~]# cp /root/test_data/emp.csv /root/emp.csv [root@localhost ~]# ls -l emp.csv -rw-r--r--. 1 root root 679 9월 19 13:53 emp.csv
문제 1. dept.csv 를 리눅스 서버에 올리기
문제 2. dept.csv 를 dept_backup.csv로 복사하기
[root@localhost ~]# cp dept.csv dept_backup.csv [root@localhost ~]# cat dept_backup.csv
문제 3. /root 밑에 있는 dept.csv 를 삭제하기
rm dept.csv
문제 4. dept_backup.csv를 복사해서 dept.csv로 붙여넣기
cp dept_backup.csv dpet.csv
📝 13. rmdir 명령어
디렉토리나 폴더를 통채로 삭제하는 명령
예제mkdir kkk2 ls -ld kkk2 rmdir kkk2 ls -ld kkk2
문제 1. /root 밑에 mmm이라는 폴더를 만들기
mkdir mmm ls -ld mmm
문제 2. /root 밑에 emp.csv 를 /root/mmm 밑에 복사하기
cp emp.csv /root/mmm/emp.csv
문제 3. /root 밑의 mmm디렉토리를 삭제할것
rmdir mmm
rm -r mmm
rm -rf mmm로 하면 지울까요? 리고 물어보지 않고 바로 지움
📝 14. mv 명령어
파일의 이름을 바꾸거나 파일을 다른 디렉토리로 이동하는 명령어
예제.
mv 기존 파일명 새로운 파일명 mv dept.csv dept100.csv ls -l dept*.csv
문제 1. 다시 dept100.csv를 dept.csv로 이름을 바꾸기
mv dept100.csv dept.csv
문제 2. /root 밑에 있는 dept.csv를 /root/test_data 밑으로 이동하기
mv dept100.csv dept.csv
📝 15. vi 편집기 명령어
- vi 편집기 명령어는 리눅스의 메모장 같은 프로그램에 텍스트를 쓰거나 수정 혹은 삭제하게 할 수 있는 명령어
- vi 편집기의 3가지 모드
- command 모드 : vi 편집기의 기본 모드이고 vi 를 실행하면 바로 보이는 화면 을 말합니다. command 모드에서 좌우상하로 이동할 수 있습니다.
- h : 왼쪽으로 이동
- l : 오른쪽으로 이동
- j : 아래로 이동
- k : 위로 이동
- G : 한번에 맨 아래로 이동
- 1G : 한번에 맨 위로 이동
- :set nu 엔터
- :set nonu 엔터 예: 스티브 잡스 연설문인 jobs.txt 를 리눅스로 올리시오 !
-
- edit 모드 : a,i,o,x 등을 누르면서 내용을 입력 또는 수정, 삭제하는 명령모드
- i : 입력모드
- a : 입력모드인데 계속 덧붙여서 쓰겠다
- o : 입력모드인데 그 다음 라인에 쓰겟다
- x : 철자 하나 삭제
- dd : 하나의 행을 삭제
- u : 작업 취소
- 만약 edit 모드에서 command 모드로 변경하고 싶다면 esc 키를 누르기
- 종료 모드 : 저장, 종료, 강제종료 등의 명령어를 입력하는 모드
- :wq! → 저장 하고 종료 (단축키 : ZZ)
- :q! → 저장 안하고 종료 (단축키 : ZQ)
- edit 모드 : a,i,o,x 등을 누르면서 내용을 입력 또는 수정, 삭제하는 명령모드
- command 모드 : vi 편집기의 기본 모드이고 vi 를 실행하면 바로 보이는 화면 을 말합니다. command 모드에서 좌우상하로 이동할 수 있습니다.
문제 1. /root/밑에 bbb.txt 를 생성하는데 아래의 내용이 저장되게 하기
select ename,sal from emp where empno = 7788;
vi bbb.txt select ename,sal from emp where empno = 7788; #esc 여러번 누른 다음 :wq! cat bbb.txt
문제 2. /root/ 밑에 ccc.txt 를 생성하는데 아래의 내용이 저장되게 하기
vi ccc.txt select ename, sal, job from emp where deptno = 10; #esc 여러번 :wq! cat ccc.txt
📝 16. vi 편집기내에서 특정 문자를 검색하는 방법
문제 1. job.txt 에서 was라는 단어를 검색하기
vi jobs.txt /was n :q!
문제 2. emp.csv를 열어서 SCOTT을 조회하기
vi emp.csv /SCOTT :q!
📝 17. vi 편집기내에서 특정 문자를 변경하는 방법
예제.
vi emp.csv :%s/기존문자/변경할문자/g 예 : :%s/KING/aaaa/g
문제 1. emp.csv를 열어서 SALESMAN 을 kkkk로 변경하기
vi emp.csv :%s/SALESMAN/kkkk/g esc키 여러번 누르고 :wq!
문제 2. 스티브 잡스 연설문에서 about 이라는 단어들을 kkkk로 변경하기
vi jobs.txt :%s/about/kkkk/g esc 여러번 :wq!
📝 18. 리눅스에 maria db 설치
리눅스 ---------- mySQL (유료) ----- Maria db(무료) ---- 파이썬 연동
https://cafe.daum.net/oracleoracle/Sho9/13 <- 참고 링크
■ 리눅스에 마리아 디비 설치
1. putty 에서 root 유져로 접속합니다.
2. centos 7의 기본 레포지토리의 url 을 다음의 내용으로 수정합니다.
# cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_backup
# vi /etc/yum.repos.d/CentOS-Base.repo
열고 안의 내용을 전부 지워버리고 아래의 내용을 붙여 넣습니다.
[base]
name=CentOS-$releasever - Base
baseurl=http://vault.centos.org/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
3. mariadb repo 파일을 만든다.
# vi /etc/yum.repos.d/MariaDB.repo
아래 내용을 복사해서 붙여넣습니다. ( i 입력후 편집모드로 바꾼후 붙여넣는다.)
[mariadb]
name = MariaDB
baseurl = https://archive.mariadb.org/mariadb-10.3.37/yum/centos7-amd64/
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
편집종료(esc 키 입력) 하고 저장후 종료합니다. ( :wq! )
4. yum 으로 mariadb 를 설치합니다.
# sudo yum install mariadb-server
5. 서버설정파일을 설치된 설정파일로 변경한다.
# cp /usr/share/mysql/wsrep.cnf /etc/my.cnf
"cp: overwrite `/etc/my.cnf'? y"
6. UTF-8, max_allowed_packet 1G 및 테이블명 대소문자 구분안하도록 설정을 추가한다.
# vi /etc/my.cnf
[mysqld]를 찾아서 그 아래에 추가 또는 수정해준다
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
max_allowed_packet=1073741824
lower_case_table_names=1
7. mariadb 서버 시작
systemctl start mariadb
8. mysql 를 root 계정으로 접속해본다.
mysql -u root -p
패스워드는 그냥 안쓰고 엔터
9. 접속후 데이터 베이스 생성하고 emp 와 dept 생성한다.
[root@localhost yum.repos.d]# mysql -u root -p
MariaDB [(none)]>
MariaDB [(none)]> create database orcl;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> use orcl
Database changed
MariaDB [orcl]>
문제1.아래의 첨부 스크립트를 실행하여 emp 와 dept 테이블을 생성합니다
create table emp (empno int(4) not null, Ename varchar(10), Job varchar(9), Mgr int(4), Hiredate date, Sal int(7), Comm int(7), Deptno int(4) ); create table dept (deptno int(2), dname varchar(20), loc varchar(20) ); INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK'); INSERT INTO dept VALUES (20,'RESEARCH','DALLAS'); INSERT INTO dept VALUES (30,'SALES','CHICAGO'); INSERT INTO dept VALUES (40,'OPERATIONS','BOSTON'); INSERT INTO emp VALUES (7839,'KING','PRESIDENT',NULL,'81-11-17',5000,NULL,10); INSERT INTO emp VALUES (7698,'BLAKE','MANAGER',7839,'81-05-01',2850,NULL,30); INSERT INTO emp VALUES (7782,'CLARK','MANAGER',7839,'81-05-09',2450,NULL,10); INSERT INTO emp VALUES (7566,'JONES','MANAGER',7839,'81-04-01',2975,NULL,20); INSERT INTO emp VALUES (7654,'MARTIN','SALESMAN',7698,'81-09-10',1250,1400,30); INSERT INTO emp VALUES (7844,'TURNER','SALESMAN',7698,'81-08-21',1500,0,30); INSERT INTO emp VALUES (7900,'JAMES','CLERK',7698,'81-12-11',950,NULL,30); INSERT INTO emp VALUES (7521,'WARD','SALESMAN',7698,'81-02-23',1250,500,30); INSERT INTO emp VALUES (7902,'FORD','ANALYST',7566,'81-12-11',3000,NULL,20); INSERT INTO emp VALUES (7369,'SMITH','CLERK',7902,'80-12-09',800,NULL,20); INSERT INTO emp VALUES (7788,'SCOTT','ANALYST',7566,'82-12-22',3000,NULL,20); INSERT INTO emp VALUES (7876,'ADAMS','CLERK',7788,'83-01-15',1100,NULL,20); INSERT INTO emp VALUES (7934,'MILLER','CLERK',7782,'82-01-11',1300,NULL,10); commit;
'빅데이터 분석(with 아이티윌) > 리눅스' 카테고리의 다른 글
[빅데이터분석] Linux_7.스파크 설치 및 운영 (3) | 2024.09.26 |
---|---|
[빅데이터분석] Linux_6. 몽고 디비(mongo db) 설치 및 운영관리 (1) | 2024.09.24 |
[빅데이터분석] Linux_5. 하둡 설치 (0) | 2024.09.23 |
[빅데이터분석] Linux_3. 리눅스함수 및 centos에 아나콘다 ,workbench 설치 (0) | 2024.09.23 |
[빅데이터분석] Linux_1. 리눅스 설치 , 리눅스 함수 (0) | 2024.09.13 |