https://docs.databricks.com/en/delta/merge.html#language-python Databricks documentation docs.databricks.com 데이터를 증분적재해야 하는 경우 merge() 혹은 MERGE INTO sql 문을 사용할 수 있다. [Python Code Snippet] (targetDF.alias("t") # DeltaTable 이 Target이 되어야 한다. .merge(sourceDF.alias("s"), "s.key = t.key") # merge 조건을 정한다. Source는 DataFrame이다. .whenMatchedUpdateAll() # key값이 동일한 경우 모두 변경 반영 .whenNotMatchedInsertAll() ..
분류 전체보기
Q. Array와 LinkedList의 장점과 단점에 대해 시간 복잡도를 가지고 설명해주세요. 더보기 Array의 장점은 순차적으로 데이터를 저장할 수 있다는 것입니다. 데이터에 순서가 있으므로 index를 갖게 되며, index를 이용하여 자료의 탐색을 O(1)의 시간복잡도로 할 수 있습니다. 반면 데이터가 순차적으로 존재하기 때문에 새로운 데이터를 삽입하거나 삭제하는 경우 그 뒤의 모든 데이터들을 한칸씩 움직여주어야 한다는 단점이 있습니다. 이 경우 O(N) 의 시간 복잡도를 가집니다. LinkedList의 경우 삽입과 삭제 연산에 O(1)의 시간복잡도를 가집니다. 반면, 탐색을 하는 경우 array 처럼 index를 이용하여 바로 접근할 수 없으며 선형 탐색을 해야 하므로 O(N)의 시간복잡도를 가..
1. 문제 n명의 권투선수가 권투 대회에 참여했고 각각 1번부터 n번까지 번호를 받았습니다. 권투 경기는 1대1 방식으로 진행이 되고, 만약 A 선수가 B 선수보다 실력이 좋다면 A 선수는 B 선수를 항상 이깁니다. 심판은 주어진 경기 결과를 가지고 선수들의 순위를 매기려 합니다. 하지만 몇몇 경기 결과를 분실하여 정확하게 순위를 매길 수 없습니다. 선수의 수 n, 경기 결과를 담은 2차원 배열 results가 매개변수로 주어질 때 정확하게 순위를 매길 수 있는 선수의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 선수의 수는 1명 이상 100명 이하입니다. 경기 결과는 1개 이상 4,500개 이하입니다. results 배열 각 행 [A, B]는 A 선수가 B 선수를 이겼다는 의..
CPU 스케줄링 데드락(DeadLock) Race Condition 세마포어(Semaphore) & 뮤텍스(Mutex) 페이징 & 세그먼테이션 페이지 교체 알고리즘 메모리(Memory) 파일 시스템 Q. CPU 스케줄링 알고리즘 중에서 비선점형 스케줄링에 대해 설명해주세요 더보기 CPU 의 이용률을 극대화하기 위해서 멀티 프로그래밍을 해야 한다. 언제 어떤 프로세스에 CPU 자원을 할당할지 결정하는 것이 CPU 스케줄링이다. 비선점형 스케줄링이란 한 프로세스가 CPU 를 점유하고 있다면 다른 프로세스가 CPU 자원을 빼앗을 수 없는 방식이다. 따라서 필요한 문맥 교환만 발생하여 오버헤드가 상대적으로 적지만 프로세스가 어떻게 배치되는 지에 따라서 효율성이 많이 차이날 수 있다. 비선점형 스케줄링의 종류 F..
Python 의 GIL (Global Interpreter Lock) Python은 멀티 스레딩 환경에서 두 개이상의 스레드가 동시에 동일한 자원에 접근하는 것을 방지하기 위해 GIL 매커니즘을 사용한다. GIL에 의해 CPU bound 작업을 처리하는 경우 한번에 하나의 스레드만 실행하도록 동작한다. 반면 I/O bound 작업의 경우에는 I/O 작업 중에 GIL가 해제되기 때문에 GIL의 영향이 상대적으로 적다. 이렇게 하나의 스레드만 사용하게 되는 GIL의 제약사항을 극복하기 위해서 Python에서 threading 과 multiprocessing 을 사용했다. 각 Python 의 프로세스가 자체적인 메모리 공간과 GIL 를 가지므로 여러 CPU 코어를 사용한 병렬처리가 가능하다. 그리고 Pytho..
알고리즘 스터디를 시작하게 되었는데 내가 스터디장이 되었다. 인증을 어떻게 하면 좀 더 덜 귀찮게 (...) 자동화 할지 알아보다가 webhook 이란걸 발견했다. 디스코드 채널 > 우클릭 > 서버 설정 > 연동을 클린한다. 연동에서 웹후크를 선택한 후 새 웹후크를 클릭하면 만들 수 있다. 웹후크 URL 을 복사한 후, GitHub 레포지토리로의 Settings로 넘어가자 Add Webhook 을 선택한 후, URL 을 붙여넣는다. 여기서 URL의 마지막에 /github 을 반드시 붙여주어야 한다. 또한 Content Type 은 application/json으로 설정해주어야 한다. 모든 event 를 받겠다고 선택했더니 main 브랜치 이외에 commit 을 한 내용도 바로 디스코드 채널로 event ..
이번 포스팅에서 정리할 운영체제 핵심 키워드 프로세스 스레드 인터럽트 시스템 콜 Process Context Switching IPC (Inter Process Communication) Q. 프로세스와 스레드에 대해 설명해주세요. 더보기 프로세스 : 프로그램이 정적 코드의 집합이라면, 프로세스는 프로그램이 실행되어 메모리에 적재 된 이후, CPU 자원을 할당 받아서 실행되고 있는 동적인 상태인 것을 의미한다. 스레드 : 하나의 프로세스 안에서 동시에 실행중인 작업 흐름의 단위를 의미한다. 인터넷 브라우저에서 동영상 재생을 하며, 쇼핑을 할 수 있는데 이는 하나의 프로세스 안에서 동시에 여러 스레드들이 진행되기 때문에 가능하다. Q. 프로세스의 내부 구조에 대해 설명해주세요. 더보기 코드영역 프로그래머가..
https://leetcode.com/problems/spiral-matrix/description/?envType=study-plan-v2&envId=top-interview-150 Spiral Matrix - LeetCode Can you solve this real interview question? Spiral Matrix - Given an m x n matrix, return all elements of the matrix in spiral order. Example 1: [https://assets.leetcode.com/uploads/2020/11/13/spiral1.jpg] Input: matrix = [[1,2,3],[4,5,6],[7,8,9]] Outpu leetcode.com 다양한..