[Linux]부트캠프 - 파일 및 폴더 생성
파일 및 폴더 생성
hdfs dfs -put 보낼(로컬) 받을(하둡)
dataframewrite.mode : append, overwrite, error/errorifexists, ignore
csv_file01 = spark.read.format("csv").option("header", "true").load("/home/big/data/flights/csv/2010-summary.csv")
csv_file02 = spark.read.option("header","true").csv("/home/big/data/flights/csv/2010-summary.csv")
csv_file02.write.format("csv").mode("overwrite").save("/tmp/csv")
이런 식으로 저장hdfs dfs -ls /tmp/csv
hdfs dfs -cat /tmp/csv/*.csv
json_file01 = spark.read.format("json").load("/home/big/data/flights/json/2010-summary.json")
json_file01.write.format("json").mode("append").save("/tmp/json")
hdfs dfs -ls /tmp/json
parquet
: spark 컬럼 기반 데이터 저장 방식orc
: hadoop 컬럼 기반 데이터 저장 방식text
db
2일차에서 썼던 데이터파일을 다시 가져오자. 모두 가져오기에는 너무 용량이 커서 내 컴퓨터가 버거워하기 때문에 ㅠㅠ 축소된 데이터만 가져와야했다.
retails = spark.read.format("csv").option("header","true").option("inferSchema", "true").load("/home/big/data/retails/2010-12-01.csv")
그리고 2일차와 환경을 맞추기 위해 함수를 불러오고, 데이터프레임을 만들어줬다.
from pyspark.sql.functions import to_date, col
date_df = retails.withColumn("date", to_date(col("InvoiceDate"), "yyyy-MM-dd HH:mm:ss"))
CustomerId와 StockCode를 기준으로 그룹화
notnull_df = date_df.drop()
# sql쿼리를 사용하기 위한 테이블 생성
notnull_df.createOrReplaceTempView("notnullDf")
spark.sql("""
SELECT CustomerId, StockCode, sum(Quantity)
FROM notnullDf
GROUP BY CustomerId, StockCode
ORDER BY CustomerId DESC, StockCode DESC
""").show()
Date와 Country컬럼을 기준으로 Rollup해서 Quantity의 합계를 집계해줬다. 그리고 Date를 기준으로 정렬하여 rollup_df를 만들어 줌
from pyspark.sql.functions import sum
# selectExpr를 사용해서 SUM(Quantity)부분 싱글쿼테이션이 아닌 백틱 `이다.
rollup_df = notnull_df.rollup("Date","Country").agg(sum("Quantity")).selectExpr("Date","Country","`SUM(Quantity)` as total_quantity").orderBy("Date")
rollup_df.show()
# Country가 null인 것 찾기
rollup_df.where("Country IS NULL").show()
이번엔 Cube를 사용해보자.
notnull_df.cube("Date","Country").agg(sum(col("Quantity"))).select("Date","Country","SUM(Quantity)").show()
이번에는 스파크에서 조인(join)을 해보자.
# 데이터 만들기
person = spark.createDataFrame(
[
(1, "shin dongyeop", 2, [1]),
(2, "seo janghun", 3, [2]),
(3, "you jaeseok", 1, [1,2]),
(4, "kang hodong", 0, [0])
]
).toDF("id", "name", "program", "job")
program = spark.createDataFrame(
[
(1, "MBC", "놀면 뭐하니"),
(2, "KBS", "불후의 명곡"),
(3, "SBS", "미운 우리 새끼"),
(4, "JTBC", "뭉쳐야 찬다")
]
).toDF("id", "broadcaster", "program")
job = spark.createDataFrame([
(1, "main mc"), (2, "member")
]).toDF("id", "job")
person.show()
program.show()
job.show()
# spark.sql fucntions를 사용하기 위해 테이블 생성
person.createOrReplaceTempView("person")
program.createOrReplaceTempView("program")
job.createOrReplaceTempView("job")
# person이 가진 program과 program의 id가 같은 것을 활용해 join
person.join(program, person['program'] == program['id']).show()
# sql사용
spark.sql("SELECT * FROM person JOIN program ON(person.program = program.id)").show()
# 위에 조건을 변수에 담아서 사용 가능하다.
conditions = person.program == program.id
person.join(program, conditions).show()
# inner 조인임을 명시할때는
person.join(program, conditions, "inner").show()
# full outer join
person.join(program, conditions, "outer").show()
# sql 사용
spark.sql("SELECT * FROM person FULL OUTER JOIN program ON(person.program = program.id)").show()
# left, right outer join
person.join(program, conditions, "left_outer").show()
person.join(program, conditions, "right_outer").show()
# semi : inner join인 결과에서 왼쪽 부분만 가져오는 것
person.join(program, conditions, "left_semi").show()
# anti : inner join하고 남는 애들만 나옴
person.join(program, conditions, "left_anti").show()
# cross join : 교차해서 나올 수 있는 모든 경우 join(Cartesian곱)
person.crossJoin(program).show()
person.join(program, how = "cross").show()
# person과 job을 조인해보자.
from pyspark.sql.functions import expr
# 이런식으로 하면 모호해서 어떤 job인지 잘 모른다.
# person.join(job, expr("array_contains(job, id)")).show()
# 따라서 withColumnRenamed를 사용해 컬럼명을 변경해주고 조인
person.withColumnRenamed("id", "num").withColumnRenamed("job", "role")\
.join(job, expr("array_contains(role, id)")).show()
# 서브쿼리를 사용해, sbs에서 프로그램을 하고 있는 사람을 출력하자.
spark.sql("""
SELECT * FROM PERSON WHERE PROGRAM = (SELECT ID FROM PROGRAM WHERE BROADCASTER = 'SBS')
""").show()
파일 및 폴더 생성
파일 시스템 탐색
도움말(man -> manual)
명령어 기초
유닉스(Unix)
특정 코드 지연 실행 - DispatchQueue.main.asyncAfter(deadline: )
Naming Conventions
안드로이드 폰과 맥북에어 M1 USB 테더링 성공
Simulator 풀 스크린 사용 방법
10807번 - 개수 세기
프로그래머스 Lv.1 풀이 코드 모음
프로그래머스 Lv.1 풀이 코드 모음
11047번 - 동전 0
11659번 - 구간 합 구하기 4
14888번 - 연산자 끼워넣기
9184번 - 신나는 함수 실행
24416번 - 알고리즘 수업 - 피보나치 수 1
2580번 - 스도쿠
9663번 - N-Queen
15652번 - N과 M (4)
15651번 - N과 M (3)
15650번 - N과 M (2)
25305번 - 커트라인
25304번 - 영수증
3003번 - 킹, 퀸, 룩, 비숍, 나이트, 폰
15649번 - N과 M (1)
2004번 - 조합 0의 개수
1676번 - 팩토리얼 0의 개수
9375번 - 패션왕 신해빈
1010번 - 다리 놓기
11051번 - 이항 계수 2
11050번 - 이항 계수 1
3036번 - 링
2981번 - 검문
1934번 - 최소공배수
2609번 - 최대공약수와 최소공배수
1037번 - 약수
5086번 - 배수와 약수
1358번 - 하키
1004번 - 어린 왕자
1002번 - 터렛
3053번 - 택시 기하학
2477번 - 참외밭
4153번 - 직각삼각형
3009번 - 네 번째 점
1085번 - 직사각형에서 탈출
11478번 - 서로 다른 부분 문자열의 개수
1269번 - 대칭 차집합
1764번 - 듣보잡
10816번 - 숫자 카드 2
1620번 - 나는야 포켓몬 마스터 이다솜
14425번 - 문자열 집합
10815번 - 숫자 카드
18870번 - 좌표 압축
10814번 - 나이순 정렬
1181번 - 단어 정렬
11651번 - 좌표 정렬하기 2
11650번 - 좌표 정렬하기
1427번 - 소트인사이드
2108번 - 통계학
10989번 - 수 정렬하기 3
2751번 - 수 정렬하기 2
2750번 - 수 정렬하기
22.06.25 ~ 27 부산 먹부림 기록
1436번 - 영화감독 숌
1018번 - 체스판 다시 칠하기
7568번 - 덩치
2231번 - 분해합
2798번 - 블랙잭
11729번 - 하노이 탑 이동 순서
2447번 - 별 찍기 - 10
17478번 - 재귀함수가 뭔가요?
10870번 - 피보나치 수 5
10872번 - 팩토리얼
9020번 - 골드바흐의 추측
4948번 - 베르트랑 공준
1929번 - 소수 구하기
11653번 - 소인수분해
2581번 - 소수
1978번 - 소수 찾기
10757번 - 큰 수 A+B
2839번 - 설탕 배달
2775번 - 부녀회장이 될테야
10250번 - ACM 호텔
2869번 - 달팽이는 올라가고 싶다
1193번 - 분수찾기
2292번 - 벌집
1712번 - 손익분기점
1316번 - 그룹 단어 체커
2941번 - 크로아티아 알파벳
5622번 - 다이얼
2908번 - 상수
1152번 - 단어의 개수
1157번 - 단어 공부
2675번 - 문자열 반복
10809번 - 알파벳 찾기
11720번 - 숫자의 합
11654번 - 아스키 코드
1065번 - 한수
4673번 - 셀프 넘버
15596번 - 정수 N개의 합
4344번 - 평균은 넘겠지
8958번 - OX퀴즈
25083번 - 새싹
Spark Bigdata Pipeline
Spark 3일차
Spark 2일차
1546번 - 평균
Spark 1일차
Hadoop🐘
3052번 - 나머지
2577번 - 숫자의 개수
2562번 - 최댓값
10818번 - 최소, 최대
Linux
MongoDB 조회 문제
MongoDB
1110번 - 더하기 사이클
10951번 - A+B - 4
Oracle 3️⃣
ORACLE 연습용 문제 만들기 숙제
10952번 - A+B - 5
Oracle 2️⃣
2480번 - 주사위 세개
Oracle Day1️⃣
Tensorflow
Big Data
2525번 - 오븐 시계
10871번 - X보다 작은 수
2439번 - 별 찍기 - 2
2438번 - 별 찍기 - 1
11022번 - A+B - 8
11021번 - A+B - 7
2742번 - 기찍 N
2741번 - N 찍기
15552번 - 빠른 A+B
8393번 - 합
10950번 - A+B - 3
9️⃣ 2739번 - 구구단
2884번 - 알람 시계
14681번 - 사분면 고르기
⛏크롤링(Crawling)
2753번 - 윤년
Django 복습 4️⃣
Django 복습 3️⃣
💯 9498번 - 시험 성적
1330번 - 두 수 비교하기
✖ 2588번 - 곱셈
➗ 10430번 - 나머지
Django 복습 2️⃣
Django 복습 1
MySQL 복습!
⁉10926번 - ??!
🆎1008번 - A/B
👩🦲 18108번 - 1998년생인 내가 태국에서는 2541년생?!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🎈✨경 축✨🎈
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
선형 자료구조(1일차에 이어서)
🆎10998번 - A×B
🆎1001번 - A-B
🆎1000번 - A+B
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🐶10172번 - 개
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🐱10171번 - 고양이
[해당 포스트는 유튜버 나동빈님의 영상을 참고했습니다.]
❤10718번 - We love kriii
🖐2557번 - Hello World
Today I Learned(TIL)📌 (2021.12.31)
Today I Learned(TIL)📌 (2021.12.30)
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[noitce!!] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!