입사 하루 만에 파악할 수 있는 Apache Zeppelin 사용법

h-go-getter·2023년 8월 13일
1
post-thumbnail
post-custom-banner

👀 1. 들어가며

1.1. 상황

회사마다 데이터를 다루고 시각화하는 데이터 분석 도구가 다릅니다. 입사 후 데이터 도구에도 빠르게 적응하는 것도 중요한데요! 어떻게 구성되어 있는지, 단축키는 무엇이며, 주로 어떻게 활용 가능 한지 등 다루는 법을 빠르게 파악하고 익힌다면 업무에 적응하기도 편하고 수월할거예요.

저희 회사에선 Apache Zeppelin(아파치 제플린)을 사용하고 있는데요. 제플린 사용법을 익히면서, 사용법을 정리해봤습니다.

1.2. 예상독자

  • Jupyter Notebook, Google Colab 등을 사용하여 데이터를 다뤄본 경험이 있지만 Apache Zeppelin은 처음 다뤄보는 사람
  • 입사한지 얼마 안 된 회사에서 Apache Zeppelin을 사용해야해서 빠르게 기본적인 기능을 파악하고자 하는 사람

🔎 2. Apache Zeppelin 사용법

2.1. Apache Zeppelin이란?

Apache Zeppelin(아파치 제플린)는 Spark에 데이터 탐색,시각화, 공유 및 협업 기능을 제공하는 web기반의 notebook입니다.

SQL, Scala, Python, R 등 다양한 프로그래밍 언어를 지원하고, 코드 작성-실행-결과확인-시각화 등을 편리하게 web기반으로 할 수 있습니다. 뿐 만아니라 notebook 형식으로 작업을 저장하고, 다른 사용자에게 공유하여 협업하기도 용이합니다!

2.2. 주요 기능 소개

주요 기능을 하나씩 설명드리면서, 어떻게 구성되어 있고, 주로 어떻게 활용 가능한지부터 단축키까지 소개드릴게요!

2.2.1. note와 paragraph

Zeeplin의 첫 화면입니다!첫 화면에서 왼쪽 위 상단의 ①Notebook클릭하면 나오는 Create new note를 클릭하거나, ②Create new note을 클릭하면 note를 만들 수 있습니다!

'Zeppelin UI Layout'이라는 note를 만들었어요! note을 만들면 노란색 박스의 paragraph를 만들 수 있습니다! 노란색 박스 하나를 paragraph라고 하고, paragraph의 모음을 note라고 해요!

note를 구성하는 도구를 하나씩 살펴볼텐데요. paragraph단위가 아닌 note 전체에 적용할 때 유용한 기능들이예요!

  • ⓐ 모든 paragraph를 표시 순서대로 순차적으로 실행
  • ⓑ 모든 paragraph code section  숨기기/표시하기
  • ⓒ 모든 paragraph result section 숨기기/표시하기
  • ⓓ 모든 paragraph result section 지우기
  • ⓔ note 복제하기 (다른 사람에게 공유받은 note라면 내가 원하는 폴더로 복제하는데 주로 사용)
  • ⓕ note를 JSON 파일로 내보내기 기능
  • ⓖ note 내용 commit 기능
  • ⓗ note 삭제
  • ⓘ 모든 paragraph 실행 예약 기능
  • ⓙ 단축키 표시 기능
  • ⓚ 현재 note interpreter 구성 확인
  • ⓛ note 권한 설정
  • ⓜ note 표시 모드 전환 기능 (default/simple/report기능이 있는데,대시보드나 보고서 형태로 활용시에 simple이나 report기능이 가독성에 좋음)

여기서 좀 더 설명드리고 싶은 기능은 ⓛ note 권한 설정기능인데요! Zeppelin은 시각화가 용이하기에 대시보드나 보고서 형식으로 사용하기도 해서, 협업 등이나 요청한 결과물을 전달드리는 목적으로 팀원이나 다른 팀 분들에게 note링크를 바로 전달드릴 때가 있어요!

이때 note권한 설정을 꼭 확인하셔야해요! note 소유자 만 이 구성을 변경할 수 있는데요. ⓛ note 권한 설정의 잠금 아이콘을 클릭 하고 노트북에서 권한 설정 페이지를 열면됩니다. Readers는 읽기 권한이고, Writers는 쓰기 권한인데요! 여기에 권한을 전달하고자하는 사용자 또는 그룹명을 작성해주시면 됩니다. 링크를 가진 모두에게 권한을 주려면 빈 칸으로 두시면됩니다!

paragraph 구성과 도구들도 설명드릴게요! note 전체가아닌 paragraph단위로 적용할 때 유용한 기능들이예요!

먼저, paragraph 구성입니다.paragraph는 아래와 같이 code section(코드를 작성하는 곳), result section(코드 실행 결과를 볼 수 있는 곳) 으로 나눠지는데요. code section 에 코드를 작성하고, 오른쪽 상단의 paragraph commands(paragraph 도구) 에 있는 실행버튼을 누르면 result section에 코드 작성 결과가 출력됩니다!

paragraph commands(paragraph 도구) 에 있는 다양한 기능도 살펴볼게요!

  • ⓐ ⓑ를 누르면, paragraph 실행 단계를 표시함 (몇 %진행 중인지 완료됐는지 error가 발생했는지 등을 알 수 있음)
  • ⓑ paragraph 실행 (단축키 : Shift + Enter)
  • ⓒ paragraph code section  숨기기/표시하기
  • ⓓ paragraph result section 숨기기/표시하기
  • ⓔ paragraph 구성

note기능 소개에도 code section숨기기/표시하기 paragraph result section 숨기기/표시하기 기능이 있었는데요! 이 기능은 대시보드나, 보고서 형태로 활용 할 때 유용해요! 결과 값만 출력이 되도록 code section 은 숨기고, result section 만 표시해서 전달드릴 때가 많거든요!

ⓔ paragraph 구성 버튼을 클릭하면, 다양한 기능을 활용할 수 있는데요! 이것도 소개 드릴게요!

  • ⓐ paragraph ID 표시
  • ⓑ paragraph 넓이 설정 (넓이 1 늘리는 단축키 : Ctrl + Shift + +, 넓이 1 줄이는 단축키 : Ctrl + Shift + - )
    * (paragraph넓이를 1~12까지 설정할 수 있습니다! 대시보드 용으로 사용할 때 유용한데요. 넓이를 6으로 설정하면 가로로 두개의 paragraph를 비교해 볼 수 있고, 넓이를 4로 설정하면 3개를 비교해볼 수 있어요!)
  • ⓒ paragraph를 위로 이동 (단축키 : Ctrl + Alt + k)
  • ⓓ paragraph를 아래로 이동 (단축키 : Ctrl + Alt + j)
  • ⓔ 새 paragraph 만들기 (위에 만들기 : Ctrl + lt + a, 아래에 만들기 : Ctrl + lt + b)
  • ⓕ paragraph 제목 변경 (단축키 : Ctrl + Alt + t)
    * (대시보드로 활용할 때 하나의 paragraph는 하나의 그래프로 사용되는데요, 제목을 설정해두면 어떤 그래프인지 설명 할수 있어 유용합니다)
  • code section 의 줄 번호 표시/숨기기 (단축키 : Ctrl + Alt + m)
    * (코드에 에러가 나면 어떤 줄 번호 문제인지 확인 할 수 있는데요! 줄번호가 숨겨져 있는 게 default값인 경우가 많아서 ⓖ버튼을 클릭하면 확인 가능합니다)
  • ⓗ paragraph 실행 버튼 비활성화 (단축키 : Ctrl + Alt + r)
  • ⓘ 현재 paragraph를 새 창에서 열기 (단축키 : Ctrl + Alt + w)
    * (새창에서 열기 후 해당 링크를 Apache Zeppelin에 연결된 웹사이트에서 게시하면 웹사이트에서 시각화 결과를 확인 할 수 있습니다. 자세한 내용은 링크를 확인해주세요!)
  • result section 지우기 (단축키 : Ctrl + Alt + l)
  • ⓚ paragraph 삭제하기 (단축키 : Ctrl + Alt + d)

2.2.2. interpreter

%sql, %python, %spark등을 code section 에 입력하면, 해당 프로그래밍 언어를 사용할 수 있습니니다. 제플린의 interprter기능인데요!

%sql
SELECT *
FROM ORDER
LIMIT 10

Zeppelin은 Python(Apache Spark 사용), Spark SQL, Hive, JDBC, Markdown, Shell 등과 같은 많은 interprter를 지원합니다. 같은 interprter끼리는 서로 다른 paragraph에서도 위에서 만든 변수를 사용할 수 있습니다! interprter기능에서 새로운 interprter를 만들고, 설정할 수도 있는데요!

회사에서 사용하는 경우는,팀에 따라 interprter에 권한이 없으실 수도 있어요! 관련 팀에서 어떤 언어나 데이터 처리 벡엔드를 Zeppelin에 연결했냐에 따라 사용가능한 interprter가 다르므로 직접 확인해보시길 바랍니다!

전 대시보드나 보고서 형태로 제플린을 활용하는 경우가 많은데요. %md로 마크다운을 사용해 note를 보는 사용자가 파악할 수 있도록 대시보드나 보고서의 목적 등 개요를 작성하고, 지표에 대한 설명을 확인 할 수 있도록 하는데 활용하고 있습니다! 그외에도 다양한 display방식이 있으니 이 링크를 확인해보세요! (단, 회사에서 해당 interprter를 설정해두지 않으면 사용이 불가능합니다!)

2.2.3. dynamic form

제플린도 dynamic form기능을 제공합니다! 이 기능 덕분에 대시보드의 역할로도 사용하기에 편리한 것 같습니다! redash의 dynamic form은 {{ }}이라면, zeppelin은 %{}입니다!

dynamic form은 입력창 역할로 손쉽게 구현할 수 있어, 동일한 쿼리를 입력 변수만 바꿔서 보고 싶을 때 유용하게 사용하고 있습니다! dynamic form을 크게 세가지 방법으로 사용하고 있는데요!

  • 텍스트 입력 방식 : ${formName} or ${formName=defaultValue} formName부분에 입력한 값은 dynamic form위에 출력 됩니다. 아래 이미지의 name처럼요! 주로 dynamic form이 어떤 값인지 설명할 때 사용하곤 해요. defaultValue는 dynamic form에 아무런 값을 입력하지 않을 때 어떤 값을 기본값으로 사용할지 설정할 수 있어요!
  • 선택 양식 :${formName=defaultValue,option1|option2...} or ${formName=defaultValue,option1(DisplayName)|option2(DisplayName)...} 선택 양식을 활용하면 option으로 주어진 값 중에 사용자가 선택할 수 있게 할 수 있습니다. 옵션과 표시되는 값을 따로 설정해줄 수도 있습니다.
  • 체크박스(다중 선택) 양식 : ${checkbox:formName=defaultValue1|defaultValue2...,option1|option2...} or ${checkbox(delimiter):formName=...} 체크 박스 양식을 만들 수도 있어요! 변수는 선택한 항목을 기반으로 쉼표로 구분된 문자열로 대체되는데요! (delimiter)를 사용하면 구분 기호를 지정해줄 수도 있어요!

기본적으로 선택 양식체크방식 양식에서는 항목을 변경하면 paragraph가 자동으로 실행됩니다. 톱니바퀴 모양의 paragraph 구성 버튼에서 아래 실행 옵션을 선택 취소하면 paragraph가 자동으로 실행되지 않도록 할 수 있습니다!

2.2.4. visualization

마지막으로 제플린의 시각화입니다. 코드 실행한 결과를 아주 쉽게 시각화해서 확인할 수 있는데요. Tableau나 redash처럼 시각화에 최적화된 tool이 아니어서 축을 여러개 지정 한다던지, 축의 최소& 최대 값 지정, 그래프 색깔 지정 등은 안되지만, 코드 결과를 빠르게 시각화해서 확인 할 수 있다는 장점이 있습니다.

코드를 실행하면 table이 출력이 되는데요! table 옆의 버튼을 누르면 여러 chart로 시각화 할 수 있습니다.

  • ⓐ table
  • ⓑ bar chart
  • ⓒ pie chart
  • ⓓ area chart
  • ⓔ line chart
  • ⓕ scatter chart
  • ⓖ table을 다운받을 수 있는 기능
  • ⓗ settings

ⓗsettings 버튼 눌러서 간단한 드래그앤 드랍으로 Keys(x축), Groups(그룹핑 기준), Values(y축)에 컬럼을 넣으면, 아주 쉽게 값을 집계하고 피벗 하여 차트에 표시할 수 있습니다. 합계, 개수, 평균, 최소값, 최대값을 포함한 여러 집계 값을 활용할 수 있어서 차트를 쉽게 만들 수 있는 것이 큰 장점입니다!

🙌 3. 정리하며

데이터 분석 도구인 Apache Zeppelin(아파치 제플린)의 기본적인 사용법을 소개 해 드렸는데요!제플린은 오픈소스인데요. 제가 소개드린 것 이외에도 각종 설치를 통해 다양한 시각화도 가능하다고 하니 다양한 활용에 관심있는 분들은 공식 페이지깃허브 링크를 참고해주시면 좋을 것 같아요!

입사 한지 얼마 안된 회사에서 zeppelin을 쓰는데 빠르게 기본적인 기능을 파악하고 익히고자하는 분이 도움되셨으면 좋겠습니다! 감사합니다.

📑 참고 자료

profile
말보다는 행동, 일단 해보고 있는 Business Analyst입니다. 🌠시리즈 탭을 클릭하시면 분류 별로 글을 보실 수 있습니다!
post-custom-banner

2개의 댓글

comment-user-thumbnail
2023년 8월 13일

좋은 글 감사합니다.

1개의 답글