LabHub
学习 学习路径 课程

Apache Spark — 느린 잡의 답은 실행 계획과 이벤트 로그에 있다 · DataFrame 과 SQL · 测验

퀴즈: DataFrame 과 SQL

在 LabHub 中继续学习

6道题. 完成作答后会显示正确答案和解析。

  1. 같은 월별 매출 질의를 spark.sql 문자열과 DataFrame API 로 각각 썼다. 성능 차이에 대해 옳은 것은?

    1. SQL 문자열은 파싱 단계가 더 있어서 늘 느리다
    2. DataFrame API 만 Catalyst 최적화를 받는다
    3. SQL 은 JVM 에서, DataFrame 은 파이썬에서 실행된다
    4. 같은 엔진이 같은 계획으로 바꾸므로 차이가 없다
  2. 합계를 내는 groupBy 의 물리 계획을 아래에서 위로 읽을 때 나타나는 순서는?

    1. Exchange → partial_sum → sum
    2. partial_sum → Exchange → sum
    3. sum → Exchange → partial_sum
    4. Exchange → sum → Exchange
  3. 날짜로 정렬한 윈도에서 프레임을 적지 않고 sum 으로 누적합을 냈더니 같은 날짜의 행들이 모두 같은 누적값을 받았다. 이유는?

    1. 정렬이 있으면 기본 프레임이 범위 기준이라 같은 날짜를 한꺼번에 포함한다
    2. sum 은 윈도에서 쓰면 파티션 전체 합을 돌려주도록 정해져 있다
    3. partitionBy 를 빼먹어서 날짜가 같은 행끼리 파티션이 된다
    4. 날짜 칼럼이 문자열이라 정렬이 무시되었기 때문이다
  4. 판매액이 [100, 90, 90, 90, 80] 인 분류에서 rank() 로 매긴 순위로 rank <= 3 을 걸렀다. 남는 행 수는?

    1. 3줄 — 순위는 늘 겹치지 않는다
    2. 5줄 — 80 도 3등이 되기 때문
    3. 4줄 — 90 셋이 공동 2등이다
    4. 2줄 — 동점은 모두 빠진다
  5. createOrReplaceTempView 로 등록한 뷰를 다른 spark-submit 앱에서 같은 이름으로 조회했더니 테이블을 찾지 못했다. 이유는?

    1. 뷰 이름은 대문자로만 불러야 하기 때문
    2. 임시 뷰는 만든 세션에 묶여 세션이 끝나면 사라지기 때문
    3. 임시 뷰는 첫 행동 뒤에 자동으로 삭제되기 때문
    4. 뷰가 자료를 메모리에 복사해 두었다가 비웠기 때문
  6. 정산용 월간 고유 고객 수에 approx_count_distinct 를 기본값으로 쓰려 한다. 문서에 근거한 판단은?

    1. 기본 rsd 가 0.05 라 오차가 허용되지 않는 정산에는 맞지 않는다
    2. 근사 함수도 결과가 정확히 같으니 무조건 근사 쪽을 쓴다
    3. rsd 를 0.001 로 낮추면 정확한 값보다 빠르고 정확해진다
    4. 근사 함수는 정수 칼럼에만 쓸 수 있어서 쓸 수 없다