<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>터칭 데이터</title>
    <link>https://touchingdata.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Mon, 18 May 2026 03:35:26 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>터칭 데이터</managingEditor>
    <item>
      <title>나는 어떤 사람이지? 일기를 써보며</title>
      <link>https://touchingdata.tistory.com/422</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;일기를 써보며 느낀 점&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;너 자신을 알라&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;socrates.jpg&quot; data-origin-width=&quot;636&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCJbYS/btsPvXs4Yd6/pgwznl9nl6oOCPIrNxM1sK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCJbYS/btsPvXs4Yd6/pgwznl9nl6oOCPIrNxM1sK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCJbYS/btsPvXs4Yd6/pgwznl9nl6oOCPIrNxM1sK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCJbYS%2FbtsPvXs4Yd6%2Fpgwznl9nl6oOCPIrNxM1sK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;636&quot; height=&quot;400&quot; data-filename=&quot;socrates.jpg&quot; data-origin-width=&quot;636&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;너 자신을 알라&lt;br /&gt;- 소크라테스&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유명인의 짧은 명언들이 모두 그렇듯 해석은 제각각이겠지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나 역시 내 나름대로의 해석을 내놓겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;나 자신을 아는 것은 매우 어렵다.. 그래서 그만큼 가치가 있다.. 그래서 이를 짚어낸 소크라테스의 저 말이 명언이 된 것이다!&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사람들은&amp;nbsp;&quot;저&amp;nbsp;사람은&amp;nbsp;어떤&amp;nbsp;사람인가요?&quot;&amp;nbsp;라는&amp;nbsp;질문에는&amp;nbsp;비교적&amp;nbsp;어렵지&amp;nbsp;않게&amp;nbsp;이야기&amp;nbsp;한다. &lt;br /&gt;하지만&amp;nbsp;&quot;당신은&amp;nbsp;어떤&amp;nbsp;사람인가요?&quot;&amp;nbsp;라는&amp;nbsp;질문에는&amp;nbsp;쉽게&amp;nbsp;답변하지&amp;nbsp;못한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;diary_writing.jpeg&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;851&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YOVYA/btsPvTLb9ok/IKSCksv369qwLzJbDxhMuK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YOVYA/btsPvTLb9ok/IKSCksv369qwLzJbDxhMuK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YOVYA/btsPvTLb9ok/IKSCksv369qwLzJbDxhMuK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYOVYA%2FbtsPvTLb9ok%2FIKSCksv369qwLzJbDxhMuK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;463&quot; height=&quot;851&quot; data-filename=&quot;diary_writing.jpeg&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;851&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;일기라.. 막상 일기를 적다보면 '하루에 있었던 일을 기록하는 것'이라는 사전적 정의와는 큰 차이가 있음을 깨닫게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일상에서의 사건과 사물 하나하나에 대해 나 자신이 어떤 생각을 갖고 있고 어떻게 느꼈는지 반추의 연속이다 보니&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;상술했듯 &lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;b&gt;'나는 어떤 사람이지?'라는 근원적인 질문의 연속&lt;/b&gt;과 다를 것이 없다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;즉, 의외로 타건보다는 생각을 자주해야 한다. 이런 면에서는 개발과 굉장히 비슷하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;letter-spacing: normal;&quot;&gt;일기 쓰기의 가치?&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 생각해보기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 나 자신에 대해 알기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 출력하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일기 쓰기는 위의 세 가지를 훈련할 수 있다는 점에 있어 크게 빛을 발한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cazTqv/btsPvVh3sY5/zAqkrEEhFtWBxbEZNJZYb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cazTqv/btsPvVh3sY5/zAqkrEEhFtWBxbEZNJZYb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cazTqv/btsPvVh3sY5/zAqkrEEhFtWBxbEZNJZYb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcazTqv%2FbtsPvVh3sY5%2FzAqkrEEhFtWBxbEZNJZYb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;150&quot; height=&quot;150&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;첫 번째, 일상의 모든 것이 사고의 매개체가 된다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하루 대부분을 차지하는 업무와 생계를 타성에 젖어 흘려 보내고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그나마 얼마 되지 않는 여가 시간은 스마트폰에 빠져 보내던 이전과 달리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일기를 쓴 이후에는 모든 것에 대해 자주적으로 생각하는 습관이 생긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'A는 좋다. B는 싫다'라는 피동적 감각 수준이 아닌&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'A와 B는 이런 비슷한 점이 있구나. 반면에 차이점은 무엇일까? C와는 어떤 관계가 있지?'의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;능동적 사고의 기회를 더 자주 가질 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOuxGd/btsPxgLFWVx/KqYiGkwXDmk2ShJ69Hkupk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOuxGd/btsPxgLFWVx/KqYiGkwXDmk2ShJ69Hkupk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOuxGd/btsPxgLFWVx/KqYiGkwXDmk2ShJ69Hkupk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOuxGd%2FbtsPxgLFWVx%2FKqYiGkwXDmk2ShJ69Hkupk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;150&quot; height=&quot;150&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;두 번째, 지기(知己)로 생산성을 향상시킨다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나 자신에 대해 아는 것이 왜 그렇게 중요할까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소크라테스처럼 손자병법의 손자 역시 지피&lt;b&gt;지기&lt;/b&gt;(知彼)라며 자신에 대해 알 것을 역설했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지피지기라는 사자성어 뒤에 늘 따르는 백전불태(百戰不殆, 백번 싸워도 위태롭지 않다)가 뜻하는 바와 같이&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자신에 대해 잘 알수록 내가 컨트롤 할 수 없는 외생변수들에 더 쉽게 대처할 수 있기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일기를 쓸수록 나를 잘 알게되고 나를 잘 알게될수록&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이디어 구상, 의사결정, 구현과 실행 등 삶에서의 모든 활동에 있어 신속함과 정확도가 올라간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqAA7W/btsPu1CStdm/iBXew4fHjizWdRw6rbivlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqAA7W/btsPu1CStdm/iBXew4fHjizWdRw6rbivlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqAA7W/btsPu1CStdm/iBXew4fHjizWdRw6rbivlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqAA7W%2FbtsPu1CStdm%2FiBXew4fHjizWdRw6rbivlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;150&quot; height=&quot;150&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;세 번째,&lt;/b&gt; &lt;b&gt;출력의 과정으로서 기능한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공부는 입력과 출력으로 나뉜다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터넷, AI, 유튜브 등, 기술과 영상 매체의 등장으로 입력으로서의 공부거리는 폭증했지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;막상 이를 본인의 손이나 입으로 출력할 기회는 적은 것이 사실이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 배운 것을 출력하는 것이 '잘난 척 한다' 오해 받을까봐 혹은 '내가 그럴 자격이 있을까?' 부담감에 쉽지도 않다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(특히 한국인이라면 더)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 일기는 출력에 있어 치트키와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 일단 공개여부를 본인이 정할 수 있기에 부담이 적으며&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 학술지나 토론과 달리 본인의 주관과 감상을 자유롭게 첨가할 수 있어 난이도가 낮다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 또한 일기 작성 중 발생하는 비문, 문장 사이의 자연스러운 연결을 위한 글의 추가와 삭제 등이 잦은 빈도로 일어나 밀도가 높다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일기를 쓰기 시작하며 깨달은 것과 어떤 의미들이 있는지 적어 보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유익한 모든 것이 그렇듯 실천하기에는 어려우니 빨리 습관화 해야겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>일상</category>
      <category>글쓰기</category>
      <category>일기</category>
      <author>터칭 데이터</author>
      <guid isPermaLink="true">https://touchingdata.tistory.com/422</guid>
      <comments>https://touchingdata.tistory.com/422#entry422comment</comments>
      <pubDate>Wed, 23 Jul 2025 23:58:43 +0900</pubDate>
    </item>
    <item>
      <title>이사 2</title>
      <link>https://touchingdata.tistory.com/421</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;지난 일요일 이사짐 일부를 먼저 옮긴 뒤 오늘 나머지 이사짐을 마저 옮겼다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아침 8시에 일어나 15시까지 쉬지 않고 이사를 마무리했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;짐 자체는 많지 않았고 미리 잘 분리 및 포장해 둔 덕에 짐을 옮기는 것 자체는 힘들지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;짐을 옮겨주신 용달 업체 아저씨께서 이렇게 짐을 미리 잘 정리해둔 분은 처음봤다고 하셔서 기분이 좋았다. ㅋㅋ..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제는 침대였다. 겉보기에는 합판 몇개가 고작인 침대 프레임들의 무게 하나하나가 만만치 않아 굉장히 고생했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더군다나 재조립 역시 문제였는데 거의 1시간 가까이를 조립했다 분해했다를 반복하며 겨우 마무리했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조립 순서는 맞았지만 묘하게 볼트의 소위 '아귀'가 맞지 않는 상황들이 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 옮기는 과정에서 프레임이 조금 휘었던 것인지.. 지금도 의문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다행히 비도 오지 않고 &lt;b&gt;요근래 기준으로는&lt;/b&gt; 조금 선선해서 다행이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모두에게 그렇듯 언제나 이사는 힘든 일이다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이사 다닐 일 없이 내 명의의 좋은 집에서 살기 위해&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이사를 마무리한 직후 바로 앉아 일기를 쓴 뒤&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘도 나는 개발을 하고 공부를 한다.&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>일상</category>
      <author>터칭 데이터</author>
      <guid isPermaLink="true">https://touchingdata.tistory.com/421</guid>
      <comments>https://touchingdata.tistory.com/421#entry421comment</comments>
      <pubDate>Tue, 22 Jul 2025 15:55:12 +0900</pubDate>
    </item>
    <item>
      <title>이사</title>
      <link>https://touchingdata.tistory.com/420</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그동안 너무 기술 스택과 관련된 글들만 써왔다.비록 블로그 이름이 터칭 데이터이기는 하나&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 개발자 분들의 블로그에 비하면 너무 삭막한 것 같아 가끔 일상을 기록해 보려 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 새로운 곳으로 이사를 왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내년 3월로 입주 예정인 곳에 들어가기까지 남은 약 8개월 정도 남은 기간 동안&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나 자신을 다잡고 새로운 각오로 임하기 위해 갑작스레 이사를 결정했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴퓨터 등 당장 필요한 짐들만 일부 가져왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나머지 가구는 다음 주 화요일 가져오기로 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게 말해 이사를 두 번 하는 셈이다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이사를 온 후 첫 알고리즘 문제.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;골드 5 난이도의 DP 문제였는데 피곤해서 였는지 새로운 환경에 덜 적응된 것인지 평소보다 시간이 조금 더 걸렸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이사글을 첫 일상글로 적다니..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;블로그에 일상을 적으시는 분들은 어떤 글을 처음으로 올렸을까 문득 궁금해진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 이사로 첫 일상글을 적은 사람은 거의 없지 않았을까&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매우 피곤하다.&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>일상</category>
      <author>터칭 데이터</author>
      <guid isPermaLink="true">https://touchingdata.tistory.com/420</guid>
      <comments>https://touchingdata.tistory.com/420#entry420comment</comments>
      <pubDate>Sun, 20 Jul 2025 21:23:00 +0900</pubDate>
    </item>
    <item>
      <title>17주차 - 1 [SparkML]</title>
      <link>https://touchingdata.tistory.com/413</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://touchingdata.tistory.com/403&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Intro&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://touchingdata.tistory.com/404&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;기타기능 Intro와 Broadcast Variable&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://touchingdata.tistory.com/405&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Accumulators&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://touchingdata.tistory.com/406&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Speculative Execution&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://touchingdata.tistory.com/407&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Resource Dynamic Allocation&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://touchingdata.tistory.com/408&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Spark Scheduler&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://touchingdata.tistory.com/409&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Driver Executor Memory&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://touchingdata.tistory.com/410&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Driver Executor OOM&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://touchingdata.tistory.com/411&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;JVM Python&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://touchingdata.tistory.com/412&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cache &amp;amp; Presist&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>데브코스 TIL</category>
      <author>터칭 데이터</author>
      <guid isPermaLink="true">https://touchingdata.tistory.com/413</guid>
      <comments>https://touchingdata.tistory.com/413#entry413comment</comments>
      <pubDate>Mon, 5 Feb 2024 18:43:18 +0900</pubDate>
    </item>
    <item>
      <title>Cache &amp;amp; Persist</title>
      <link>https://touchingdata.tistory.com/412</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;Spark&amp;nbsp;고급과&amp;nbsp;Spark&amp;nbsp;ML&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Shuffling시&amp;nbsp;Skew&amp;nbsp;처리방식과&amp;nbsp;Spark&amp;nbsp;ML에&amp;nbsp;대해&amp;nbsp;배워보자&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Contents&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;1.&amp;nbsp;기타&amp;nbsp;기능/개념&amp;nbsp;살펴보기&lt;br /&gt;2.&amp;nbsp;Driver와&amp;nbsp;Executor&amp;nbsp;해부&lt;br /&gt;3.&amp;nbsp;메모리&amp;nbsp;이슈&amp;nbsp;정리&lt;br /&gt;4.&amp;nbsp;JVM과&amp;nbsp;Python&amp;nbsp;간의&amp;nbsp;통신&lt;br /&gt;&lt;b&gt;5.&amp;nbsp;Caching과&amp;nbsp;Persist&lt;/b&gt;&lt;br /&gt;6.&amp;nbsp;Dynamic&amp;nbsp;Partition&amp;nbsp;Pruning&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;Caching과 Persist&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;어느 데이터시스템이건 반복되어서 사용되는 데이터가 있다면 메모리에 두는 것이 좋은데&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Spark에서 사용법에 대해 알아보자&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Caching&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;772&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TbLne/btsEoMWgHGa/R4ZkA4cGPLZPSoE7ULucT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TbLne/btsEoMWgHGa/R4ZkA4cGPLZPSoE7ULucT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TbLne/btsEoMWgHGa/R4ZkA4cGPLZPSoE7ULucT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTbLne%2FbtsEoMWgHGa%2FR4ZkA4cGPLZPSoE7ULucT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;402&quot; height=&quot;460&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;772&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Caching이란 무엇이며 왜 caching이 필요한가? &lt;br /&gt;2.&amp;nbsp;어떻게&amp;nbsp;DataFrame을&amp;nbsp;caching하는가? &lt;br /&gt;3. 언제 caching하고 언제 하지 말아야 하는가? &lt;br /&gt;4.&amp;nbsp;Caching을&amp;nbsp;취소하는&amp;nbsp;방법은? &lt;br /&gt;5.&amp;nbsp;Caching&amp;nbsp;포맷은? &lt;br /&gt;6. Caching을 메모리에 할까? 디스크에 할까? &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Caching이란 무엇이며 왜 caching이 필요한가?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;자주 사용되는 데이터프레임을 메모리에 유지하여 처리속도 증가&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;단&amp;nbsp;그&amp;nbsp;데이터프레임이&amp;nbsp;정말&amp;nbsp;메모리에&amp;nbsp;있는지&amp;nbsp;확인&amp;nbsp;필요 &lt;br /&gt;●&amp;nbsp;어떤&amp;nbsp;경우에는&amp;nbsp;다시&amp;nbsp;계산하는&amp;nbsp;것이&amp;nbsp;빠를&amp;nbsp;수도&amp;nbsp;있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;단 메모리 소비를 늘리므로 불필요하게 모든 걸 캐싱할 필요는 없음&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1517&quot; data-origin-height=&quot;588&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oQcaU/btsEuCelR6o/2XuEWla5A24GQjSI4fQhgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oQcaU/btsEuCelR6o/2XuEWla5A24GQjSI4fQhgk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oQcaU/btsEuCelR6o/2XuEWla5A24GQjSI4fQhgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoQcaU%2FbtsEuCelR6o%2F2XuEWla5A24GQjSI4fQhgk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1517&quot; height=&quot;588&quot; data-origin-width=&quot;1517&quot; data-origin-height=&quot;588&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;어떻게 DataFrame을 caching하는가? (1)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;두 가지 방법이 존재&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;cache() &lt;br /&gt;●&amp;nbsp;persist()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;둘다 데이터프레임을 메모리/디스크/오프힙에 보존&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;모두&amp;nbsp;lazy&amp;nbsp;execution&amp;nbsp;-&amp;nbsp;필요해지기&amp;nbsp;전까지&amp;nbsp;캐싱하지&amp;nbsp;않음 &lt;br /&gt;●&amp;nbsp;caching은&amp;nbsp;항상&amp;nbsp;파티션&amp;nbsp;단위로&amp;nbsp;메모리에&amp;nbsp;보존 &lt;br /&gt;&amp;nbsp; &amp;nbsp; ▪ 하나의 파티션이 부분적으로 caching되지 않음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;어떻게 DataFrame을 caching하는가? (2)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;persist는 인자를 통해 세부 제어 가능&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;useDisk&amp;nbsp;=&amp;nbsp;True &lt;br /&gt;●&amp;nbsp;useMemory&amp;nbsp;=&amp;nbsp;True &lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;●&amp;nbsp;useOffHeap&amp;nbsp;=&amp;nbsp;False &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&amp;nbsp; &amp;nbsp; ▪ off Heap 설정이 필요&lt;/span&gt; &lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;●&amp;nbsp;deserialized&amp;nbsp;=&amp;nbsp;False &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&amp;nbsp; &amp;nbsp; ▪ 메모리를 줄일지 아니면 CPU 계산을 줄일지? 후자++ &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&amp;nbsp; &amp;nbsp; ▪ deserialized = True는 메모리에서만 가능&lt;/span&gt; &lt;br /&gt;●&amp;nbsp;replication&amp;nbsp;=&amp;nbsp;1 &lt;br /&gt;&amp;nbsp; &amp;nbsp; ▪ 몇 개의 복사본을 서로 다른 executor에 저장할지 결정 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;어떻게 DataFrame을 caching하는가? (3)&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;persist의 인자로 자주 사용되는 조합은 하나의 상수로 지정 가능&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;DISK_ONLY &lt;br /&gt;●&amp;nbsp;MEMORY_ONLY &lt;br /&gt;●&amp;nbsp;MEMORY_AND_DISK &lt;br /&gt;●&amp;nbsp;MEMORY_ONLY_SER &lt;br /&gt;●&amp;nbsp;MEMORY_AND_DISK_SER &lt;br /&gt;●&amp;nbsp;OFF_HEAP &lt;br /&gt;●&amp;nbsp;MEMORY_ONLY_2 &lt;br /&gt;●&amp;nbsp;MEMORY_ONLY_3 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;어떻게 DataFrame을 caching하는가? (4)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;persist는 기본적으로 caching되는 데이터프레임을 메모리와 디스크에 보관하고 복제도 수행함&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;cache는 persist의 다음 버전&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;disk=False &lt;br /&gt;●&amp;nbsp;memory=True &lt;br /&gt;●&amp;nbsp;offHeap=False &lt;br /&gt;●&amp;nbsp;deserialized=True &lt;br /&gt;●&amp;nbsp;replication=1 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Spark SQL을 사용한 Caching&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;spark.sql(&quot;cache table table_name&quot;)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;spark.sql(&quot;cache lazy table table_name&quot;)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;spark.sql(&quot;uncache table table_name&quot;) &lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Caching을 취소하는 방법은?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;DataFrame.unpersist (LRU - Least&amp;nbsp;Recently&amp;nbsp;Used)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;spark.sql(&quot;uncache table table_name&quot;)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;spark.catalog.isCached(&quot;table_name&quot;)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;spark.catalog.clearCache() &lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;a href=&quot;https://colab.research.google.com/drive/1YCzzL4Dsl3yUDkkpanywsfKOxCYOF8MY?usp=sharing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Caching 실습&lt;/a&gt;&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Caching 여부 확인&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;Spark&amp;nbsp;Web&amp;nbsp;UI의&amp;nbsp;Storage&amp;nbsp;탭&amp;nbsp;확인 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1441&quot; data-origin-height=&quot;592&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l68Of/btsEqVZOHJ7/WEUMfMgnEmavEEZKrQ4MJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l68Of/btsEqVZOHJ7/WEUMfMgnEmavEEZKrQ4MJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l68Of/btsEqVZOHJ7/WEUMfMgnEmavEEZKrQ4MJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl68Of%2FbtsEqVZOHJ7%2FWEUMfMgnEmavEEZKrQ4MJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1441&quot; height=&quot;592&quot; data-origin-width=&quot;1441&quot; data-origin-height=&quot;592&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;a href=&quot;https://towardsdatascience.com/best-practices-for-caching-in-spark-sql-b22fb0f02d34&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Caching 관련 Best Practices&lt;/a&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;캐싱된 데이터 프레임이 재사용되는 것을 분명하게 하기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;cachedDF&amp;nbsp;=&amp;nbsp;df.cache() &lt;br /&gt;●&amp;nbsp;cachedDF.select(&amp;hellip;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;컬럼이 많다면 정말 필요한 컬럼만 캐싱&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;cachedDF&amp;nbsp;=&amp;nbsp;df.select(col1,&amp;nbsp;col2,&amp;nbsp;col3,&amp;nbsp;col4).cache()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;불필요할 때 uncache&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;때로는 매번 새로 데이터프레임을 계산하는 것이 캐싱보다 빠를 수 있음&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;이는&amp;nbsp;큰&amp;nbsp;데이터셋이&amp;nbsp;Parquet와&amp;nbsp;같은&amp;nbsp;포맷으로&amp;nbsp;존재하는&amp;nbsp;경우 &lt;br /&gt;●&amp;nbsp;캐싱결과가&amp;nbsp; &lt;br /&gt;&lt;br /&gt;❖&amp;nbsp;소수의&amp;nbsp;너무&amp;nbsp;커서데이터프레임만&amp;nbsp;메모리에만&amp;nbsp;있을&amp;nbsp;수캐싱없는&amp;nbsp;경우 &lt;br /&gt;❖&amp;nbsp;큰&amp;nbsp;데이터프레임의&amp;nbsp;캐싱은&amp;nbsp;하지&amp;nbsp;말것 &lt;br /&gt;❖&amp;nbsp;캐싱을&amp;nbsp;너무&amp;nbsp;믿지&amp;nbsp;말것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>SparkML</category>
      <author>터칭 데이터</author>
      <guid isPermaLink="true">https://touchingdata.tistory.com/412</guid>
      <comments>https://touchingdata.tistory.com/412#entry412comment</comments>
      <pubDate>Mon, 5 Feb 2024 14:25:37 +0900</pubDate>
    </item>
    <item>
      <title>JVM Python</title>
      <link>https://touchingdata.tistory.com/411</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;Spark&amp;nbsp;고급과&amp;nbsp;Spark&amp;nbsp;ML&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Shuffling시&amp;nbsp;Skew&amp;nbsp;처리방식과&amp;nbsp;Spark&amp;nbsp;ML에&amp;nbsp;대해&amp;nbsp;배워보자&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Contents&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;1.&amp;nbsp;기타&amp;nbsp;기능/개념&amp;nbsp;살펴보기&lt;br /&gt;2.&amp;nbsp;Driver와&amp;nbsp;Executor&amp;nbsp;해부&lt;br /&gt;3.&amp;nbsp;메모리&amp;nbsp;이슈&amp;nbsp;정리&lt;br /&gt;&lt;b&gt;4.&amp;nbsp;JVM과&amp;nbsp;Python&amp;nbsp;간의&amp;nbsp;통신&lt;/b&gt;&lt;br /&gt;5.&amp;nbsp;Caching과&amp;nbsp;Persist&lt;br /&gt;6.&amp;nbsp;Dynamic&amp;nbsp;Partition&amp;nbsp;Pruning&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;JVM과 Python 간의 통신&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;JVM과 Python 프로세스들간의 통신에 대해서 알아보자&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;PySpark Driver&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Python&amp;nbsp;프로세스&amp;nbsp;+&amp;nbsp;JVM&amp;nbsp;프로세스&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1603&quot; data-origin-height=&quot;770&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dM65YW/btsEngcrIIb/mKwhCZxN5Icyn8xXZMA8n0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dM65YW/btsEngcrIIb/mKwhCZxN5Icyn8xXZMA8n0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dM65YW/btsEngcrIIb/mKwhCZxN5Icyn8xXZMA8n0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdM65YW%2FbtsEngcrIIb%2FmKwhCZxN5Icyn8xXZMA8n0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1603&quot; height=&quot;770&quot; data-origin-width=&quot;1603&quot; data-origin-height=&quot;770&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;a href=&quot;https://medium.com/walmartglobaltech/decoding-memory-in-spark-parameters-that-are-often-confused-c11be7488a24&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;PySpark Memory&lt;/a&gt; (1)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Spark은 JVM Application이지만 PySpark은 Python 프로세스&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;JVM에서&amp;nbsp;바로&amp;nbsp;동작하지&amp;nbsp;못함&amp;nbsp;따라서&amp;nbsp;JVM&amp;nbsp;메모리를&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;없음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;spark.executor.pyspark.memory (Python 프로세스)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;spark.python.worker.memory (Py4J)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1502&quot; data-origin-height=&quot;633&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgBpO6/btsEmsRZBi4/Ubq84AK9rAChODI666VLck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgBpO6/btsEmsRZBi4/Ubq84AK9rAChODI666VLck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgBpO6/btsEmsRZBi4/Ubq84AK9rAChODI666VLck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgBpO6%2FbtsEmsRZBi4%2FUbq84AK9rAChODI666VLck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1502&quot; height=&quot;633&quot; data-origin-width=&quot;1502&quot; data-origin-height=&quot;633&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;PySpark Memory (2)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;spark.executor.pyspark.memory&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;● PySpark은 기본으로 overhead memory를 사용. 이 환경변수가 사용되면 PySpark이 사용할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;메모리는&amp;nbsp;이&amp;nbsp;환경변수의&amp;nbsp;값으로&amp;nbsp;고정됨 &lt;br /&gt;● 이는 사실 PySpark이 외부 파이썬 함수를 쓰는 경우에만 필요 (기본적으로는 세팅되지 않음)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;spark.python.worker.memory&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;디폴트&amp;nbsp;값은&amp;nbsp;512MB&amp;nbsp;(512m) &lt;br /&gt;●&amp;nbsp;JVM과&amp;nbsp;파이썬&amp;nbsp;프로세스간의&amp;nbsp;통신을&amp;nbsp;담당하는&amp;nbsp;Py4J가&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;메모리의&amp;nbsp;양 &lt;br /&gt;●&amp;nbsp;이&amp;nbsp;크기를&amp;nbsp;넘어가면&amp;nbsp;디스크로&amp;nbsp;Spill&amp;nbsp;발생&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;●&amp;nbsp;spark.executor.pyspark.memory는&amp;nbsp;파이썬&amp;nbsp;프로세스의&amp;nbsp;사용&amp;nbsp;메모리&amp;nbsp;크기&amp;nbsp;결정 &lt;br /&gt;●&amp;nbsp;spark.python.worker.memory는&amp;nbsp;JVM에서&amp;nbsp;사용되는&amp;nbsp;파이썬&amp;nbsp;오브젝트들의&amp;nbsp;최대&amp;nbsp;메모리 &lt;br /&gt;결정 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/61816236/does-pyspark-code-run-in-jvm-or-python-subprocess&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Spark과 Python간의 통신&lt;/a&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Py4J: 파이썬과 JVM간의 데이터 교환을 통해 둘간의 연동을 도와주는 프레임웍&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;DataFrame/RDD 연산중에 파이썬 코드가 사용되면?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;이는&amp;nbsp;별도의&amp;nbsp;파이썬&amp;nbsp;프로세스를&amp;nbsp;통해&amp;nbsp;실행되며&amp;nbsp;이&amp;nbsp;경우&amp;nbsp;파티션&amp;nbsp;데이터가&amp;nbsp;모두&amp;nbsp;넘어감&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1619&quot; data-origin-height=&quot;427&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d4qzDm/btsEmq7Oglb/4lrCNAI34Itrk7ftDAwdBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d4qzDm/btsEmq7Oglb/4lrCNAI34Itrk7ftDAwdBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d4qzDm/btsEmq7Oglb/4lrCNAI34Itrk7ftDAwdBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd4qzDm%2FbtsEmq7Oglb%2F4lrCNAI34Itrk7ftDAwdBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1619&quot; height=&quot;427&quot; data-origin-width=&quot;1619&quot; data-origin-height=&quot;427&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Spark과 UDF&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1362&quot; data-origin-height=&quot;802&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IldEn/btsEtje0zjD/nkYSet6iKidqNKMEeu98k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IldEn/btsEtje0zjD/nkYSet6iKidqNKMEeu98k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IldEn/btsEtje0zjD/nkYSet6iKidqNKMEeu98k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIldEn%2FbtsEtje0zjD%2FnkYSet6iKidqNKMEeu98k1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1362&quot; height=&quot;802&quot; data-origin-width=&quot;1362&quot; data-origin-height=&quot;802&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Java나&amp;nbsp;Scala로&amp;nbsp;작성&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Python으로 작성&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Pandas Python으로 작성&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;Vectorized&amp;nbsp;UDFs &lt;br /&gt;●&amp;nbsp;PyArrow가&amp;nbsp;사용됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>터칭 데이터</author>
      <guid isPermaLink="true">https://touchingdata.tistory.com/411</guid>
      <comments>https://touchingdata.tistory.com/411#entry411comment</comments>
      <pubDate>Mon, 5 Feb 2024 14:22:12 +0900</pubDate>
    </item>
    <item>
      <title>Driver Executor OOM</title>
      <link>https://touchingdata.tistory.com/410</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;Spark&amp;nbsp;고급과&amp;nbsp;Spark&amp;nbsp;ML&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Shuffling시&amp;nbsp;Skew&amp;nbsp;처리방식과&amp;nbsp;Spark&amp;nbsp;ML에&amp;nbsp;대해&amp;nbsp;배워보자&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Contents&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;1.&amp;nbsp;기타&amp;nbsp;기능/개념&amp;nbsp;살펴보기&lt;br /&gt;2.&amp;nbsp;Driver와&amp;nbsp;Executor&amp;nbsp;해부&lt;br /&gt;&lt;b&gt;3.&amp;nbsp;메모리&amp;nbsp;이슈&amp;nbsp;정리&lt;/b&gt;&lt;br /&gt;4.&amp;nbsp;JVM과&amp;nbsp;Python&amp;nbsp;간의&amp;nbsp;통신&lt;br /&gt;5.&amp;nbsp;Caching과&amp;nbsp;Persist&lt;br /&gt;6.&amp;nbsp;Dynamic&amp;nbsp;Partition&amp;nbsp;Pruning&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;메모리 이슈 정리&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Driver와 Executor에서 발생가능한 메모리 이슈들을 정리해보자&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Spark 메모리 이슈 (OOM)&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;❖ Driver OOM&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;❖&amp;nbsp;Executor&amp;nbsp;OOM &lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1798&quot; data-origin-height=&quot;263&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCRWXc/btsEmGiMSfc/144kp6ZoaKcQ1dCGCNnjSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCRWXc/btsEmGiMSfc/144kp6ZoaKcQ1dCGCNnjSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCRWXc/btsEmGiMSfc/144kp6ZoaKcQ1dCGCNnjSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCRWXc%2FbtsEmGiMSfc%2F144kp6ZoaKcQ1dCGCNnjSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1798&quot; height=&quot;263&quot; data-origin-width=&quot;1798&quot; data-origin-height=&quot;263&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Driver OOM 케이스들&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a href=&quot;https://github.com/keeyong/beginner-spark-programming-with-pyspark/blob/main/advanced_week1/(Spark_%E1%84%80%E1%85%A9%E1%84%80%E1%85%B3%E1%86%B8)_Driver_OOM.ipynb&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;큰 데이터셋에 collect 실행&lt;/a&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a href=&quot;https://github.com/keeyong/beginner-spark-programming-with-pyspark/blob/main/advanced_week1/broadcast_join_error.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;큰 데이터셋을 Broadcast JOIN&lt;/a&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Python이나 R 등으로 작성된 코드&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;너무 많은 태스크들 &lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Executor OOM 케이스들&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;너무 큰 executor.cores 값&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;● High Concurrency&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Data Skew (Big Partition) &lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>SparkML</category>
      <author>터칭 데이터</author>
      <guid isPermaLink="true">https://touchingdata.tistory.com/410</guid>
      <comments>https://touchingdata.tistory.com/410#entry410comment</comments>
      <pubDate>Mon, 5 Feb 2024 14:12:01 +0900</pubDate>
    </item>
    <item>
      <title>Driver Executor Memory</title>
      <link>https://touchingdata.tistory.com/409</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;Spark&amp;nbsp;고급과&amp;nbsp;Spark&amp;nbsp;ML&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Shuffling시&amp;nbsp;Skew&amp;nbsp;처리방식과&amp;nbsp;Spark&amp;nbsp;ML에&amp;nbsp;대해&amp;nbsp;배워보자&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Contents&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;1.&amp;nbsp;기타&amp;nbsp;기능/개념&amp;nbsp;살펴보기 &lt;br /&gt;&lt;b&gt;2.&amp;nbsp;Driver와&amp;nbsp;Executor&amp;nbsp;해부&lt;/b&gt; &lt;br /&gt;3.&amp;nbsp;메모리&amp;nbsp;이슈&amp;nbsp;정리 &lt;br /&gt;4.&amp;nbsp;JVM과&amp;nbsp;Python&amp;nbsp;간의&amp;nbsp;통신 &lt;br /&gt;5.&amp;nbsp;Caching과&amp;nbsp;Persist &lt;br /&gt;6.&amp;nbsp;Dynamic&amp;nbsp;Partition&amp;nbsp;Pruning&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;Driver와 Executor 해부&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Driver와 Executor의 리소스 사용에 대해 알아보자&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Driver의 역할&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Spark Application = (1 Driver) + (1+ Executor)&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Driver는 다음 역할을 수행&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;main&amp;nbsp;함수&amp;nbsp;실행하고&amp;nbsp;SparkSession/SparkContext를&amp;nbsp;생성 &lt;br /&gt;●&amp;nbsp;코드를&amp;nbsp;태스크로&amp;nbsp;변환하여&amp;nbsp;DAG&amp;nbsp;생성 &lt;br /&gt;●&amp;nbsp;이를&amp;nbsp;execution/logical/physical&amp;nbsp;plan으로&amp;nbsp;변환 &lt;br /&gt;●&amp;nbsp;리소스&amp;nbsp;매니저의&amp;nbsp;도움을&amp;nbsp;받아&amp;nbsp;태스크들을&amp;nbsp;실행하고&amp;nbsp;관리 &lt;br /&gt;&amp;nbsp; &amp;nbsp; ▪ task의 수가 너무 많아지면 driver 메모리 에러 발생 &lt;br /&gt;●&amp;nbsp;위의&amp;nbsp;정보들을&amp;nbsp;Web&amp;nbsp;UI로&amp;nbsp;노출시킴&amp;nbsp;(4040&amp;nbsp;포트)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;729&quot; data-origin-height=&quot;748&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQWBKI/btsEnVznJ7k/FdToU1CVa2CLAjyrfjx51K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQWBKI/btsEnVznJ7k/FdToU1CVa2CLAjyrfjx51K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQWBKI/btsEnVznJ7k/FdToU1CVa2CLAjyrfjx51K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQWBKI%2FbtsEnVznJ7k%2FFdToU1CVa2CLAjyrfjx51K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;296&quot; height=&quot;304&quot; data-origin-width=&quot;729&quot; data-origin-height=&quot;748&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Driver 메모리 구성&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;841&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ealiXL/btsEmpgFpjV/aQ3HGDfQqrHcU8TWOdbzck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ealiXL/btsEmpgFpjV/aQ3HGDfQqrHcU8TWOdbzck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ealiXL/btsEmpgFpjV/aQ3HGDfQqrHcU8TWOdbzck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FealiXL%2FbtsEmpgFpjV%2FaQ3HGDfQqrHcU8TWOdbzck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;408&quot; height=&quot;444&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;841&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;spark.driver.memory&amp;nbsp;=&amp;nbsp;4GB&lt;/b&gt; &lt;br /&gt;spark.driver.cores&amp;nbsp;=&amp;nbsp;4&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;spark.driver.memoryOverhead&amp;nbsp;=&amp;nbsp;0.1 &lt;br /&gt;●&amp;nbsp;max(spark.driver.memory의&amp;nbsp;10%,&amp;nbsp;384MB) &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Executor 메모리 구성&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1301&quot; data-origin-height=&quot;751&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kH9Hi/btsEmNuLPos/EG9gkI29c8dxjhJkxmcfK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kH9Hi/btsEmNuLPos/EG9gkI29c8dxjhJkxmcfK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kH9Hi/btsEmNuLPos/EG9gkI29c8dxjhJkxmcfK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkH9Hi%2FbtsEmNuLPos%2FEG9gkI29c8dxjhJkxmcfK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1301&quot; height=&quot;751&quot; data-origin-width=&quot;1301&quot; data-origin-height=&quot;751&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;메모리 구성 - Heap 메모리(8GB)만 보자&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1849&quot; data-origin-height=&quot;775&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cugSJC/btsEqXDeRFP/lA2oko7gXp5S23iNfspkpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cugSJC/btsEqXDeRFP/lA2oko7gXp5S23iNfspkpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cugSJC/btsEqXDeRFP/lA2oko7gXp5S23iNfspkpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcugSJC%2FbtsEqXDeRFP%2FlA2oko7gXp5S23iNfspkpk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1849&quot; height=&quot;775&quot; data-origin-width=&quot;1849&quot; data-origin-height=&quot;775&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;메모리 구성 - User Memory를 보자&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1576&quot; data-origin-height=&quot;878&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPDMrg/btsEnT9rIv6/SbBXxCQPAeYQUJMcyi4cMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPDMrg/btsEnT9rIv6/SbBXxCQPAeYQUJMcyi4cMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPDMrg/btsEnT9rIv6/SbBXxCQPAeYQUJMcyi4cMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPDMrg%2FbtsEnT9rIv6%2FSbBXxCQPAeYQUJMcyi4cMk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1576&quot; height=&quot;878&quot; data-origin-width=&quot;1576&quot; data-origin-height=&quot;878&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;메모리 구성 - Spark Memory를 보자&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1556&quot; data-origin-height=&quot;690&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbKpAE/btsEmT9X9pI/ZC1pssGksLmtCp6yeVSkP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbKpAE/btsEmT9X9pI/ZC1pssGksLmtCp6yeVSkP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbKpAE/btsEmT9X9pI/ZC1pssGksLmtCp6yeVSkP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbKpAE%2FbtsEmT9X9pI%2FZC1pssGksLmtCp6yeVSkP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1556&quot; height=&quot;690&quot; data-origin-width=&quot;1556&quot; data-origin-height=&quot;690&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Executor CPU &lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1519&quot; data-origin-height=&quot;795&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZR0nB/btsEliWn3Xu/EkgF2QKhLKkMnKa5IXKICK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZR0nB/btsEliWn3Xu/EkgF2QKhLKkMnKa5IXKICK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZR0nB/btsEliWn3Xu/EkgF2QKhLKkMnKa5IXKICK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZR0nB%2FbtsEliWn3Xu%2FEkgF2QKhLKkMnKa5IXKICK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1519&quot; height=&quot;795&quot; data-origin-width=&quot;1519&quot; data-origin-height=&quot;795&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Executor Resource&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;캡처.PNG&quot; data-origin-width=&quot;1401&quot; data-origin-height=&quot;743&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mPoUy/btsEmFjPHmX/a8xRKvvrK5p93UDb7i7mj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mPoUy/btsEmFjPHmX/a8xRKvvrK5p93UDb7i7mj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mPoUy/btsEmFjPHmX/a8xRKvvrK5p93UDb7i7mj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmPoUy%2FbtsEmFjPHmX%2Fa8xRKvvrK5p93UDb7i7mj1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1401&quot; height=&quot;743&quot; data-filename=&quot;캡처.PNG&quot; data-origin-width=&quot;1401&quot; data-origin-height=&quot;743&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Executor Memory Pool Management&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Static Memory Management&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;Spark&amp;nbsp;1.6전에는&amp;nbsp;슬롯들끼리&amp;nbsp;공평하게&amp;nbsp;나눠&amp;nbsp;가짐&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;지금은 Unified Memory Manager를 사용함&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;동작중인&amp;nbsp;태스크&amp;nbsp;대상으로&amp;nbsp;Fair&amp;nbsp;Allocation이&amp;nbsp;기본&amp;nbsp;동작 &lt;br /&gt;&amp;nbsp; &amp;nbsp; ▪ 즉 실행중인 태스크가 모든 메모리를 가져가는 구조임 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Unified Memory Management&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Executor 메모리가 부족해지기 시작하면 어떤 일이 생길까?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;메모리가&amp;nbsp;부족해지면&amp;nbsp;Storage&amp;nbsp;Memory&amp;nbsp;Pool에&amp;nbsp;남는&amp;nbsp;메모리를&amp;nbsp;사용 &lt;br /&gt;●&amp;nbsp;spark.memory.storageFraction로&amp;nbsp;지정된&amp;nbsp;비율은&amp;nbsp;시작&amp;nbsp;비율 &lt;br /&gt;&amp;nbsp; &amp;nbsp; ▪ 하지만 양쪽의 메모리가 차기 시작하면 이 경계선은 지켜지면서 &lt;a href=&quot;https://luminousmen.com/post/dive-into-spark-memory&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;eviction&lt;/a&gt; 발생&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;반대로 Storage 메모리가 부족하기 시작한다면?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;● DataFrame 캐싱을 하기위한 메모리가 부족해지면 Executor Memory Pool에 남는 메모리&amp;nbsp;사용 &lt;br /&gt;● 하지만 결국 spark.memory.storageFraction 이상은 넘어가지지 않음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;더 이상 쓸 메모리가 없다면?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;데이터를&amp;nbsp;메모리에서&amp;nbsp;디스크로&amp;nbsp;옮김&amp;nbsp;(disk&amp;nbsp;spill) &lt;br /&gt;●&amp;nbsp;디스크로&amp;nbsp;spill을&amp;nbsp;할&amp;nbsp;수&amp;nbsp;없다면&amp;nbsp;OOM&amp;nbsp;(Out&amp;nbsp;of&amp;nbsp;Memory)&amp;nbsp;발생&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Spark Executor Memory Configuration (1)&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1764&quot; data-origin-height=&quot;821&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/waOtj/btsEoLwgJsx/v0zSMirK9k8McvDnqUyik0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/waOtj/btsEoLwgJsx/v0zSMirK9k8McvDnqUyik0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/waOtj/btsEoLwgJsx/v0zSMirK9k8McvDnqUyik0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwaOtj%2FbtsEoLwgJsx%2Fv0zSMirK9k8McvDnqUyik0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1764&quot; height=&quot;821&quot; data-origin-width=&quot;1764&quot; data-origin-height=&quot;821&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Spark Executor Memory Configuration (2)&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1703&quot; data-origin-height=&quot;468&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ArpMo/btsEqunsmVq/5qaCHvDptSNJrhWKFIvok1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ArpMo/btsEqunsmVq/5qaCHvDptSNJrhWKFIvok1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ArpMo/btsEqunsmVq/5qaCHvDptSNJrhWKFIvok1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FArpMo%2FbtsEqunsmVq%2F5qaCHvDptSNJrhWKFIvok1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1703&quot; height=&quot;468&quot; data-origin-width=&quot;1703&quot; data-origin-height=&quot;468&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국&amp;nbsp;하나의&amp;nbsp;Executor에&amp;nbsp;할당되는&amp;nbsp;메모리는&amp;nbsp;아래와&amp;nbsp;같음: &lt;br /&gt;spark.executor.memoryOverhead&amp;nbsp;+&amp;nbsp;spark.executor.memory&amp;nbsp;+&amp;nbsp;spark.memory.offHeap.size&amp;nbsp;+&amp;nbsp; &lt;br /&gt;spark.executor.pyspark.memory&amp;nbsp;(+&amp;nbsp;spark.python.worker.memory) &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;a href=&quot;https://medium.com/walmartglobaltech/decoding-memory-in-spark-parameters-that-are-often-confused-c11be7488a24&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;What is Off Heap Memory&lt;/a&gt;?&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Spark은 On Heap 메모리에서 가장 잘 동작함&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;하지만&amp;nbsp;JVM&amp;nbsp;Heap은&amp;nbsp;Garbage&amp;nbsp;collection의&amp;nbsp;대상이&amp;nbsp;됨 &lt;br /&gt;●&amp;nbsp;JVM&amp;nbsp;Heap의&amp;nbsp;크기가&amp;nbsp;클수록&amp;nbsp;Garbe&amp;nbsp;collection으로&amp;nbsp;인한&amp;nbsp;비용&amp;nbsp;증가 &lt;br /&gt;● 이 때 같이 사용할 수 있는 것이 JVM 밖에 있는 메모리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; ▪ Overhead 메모리 &lt;br /&gt;&amp;nbsp; &amp;nbsp; ▪ Off Heap 메모리 &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;bull; spark.memory.offHeap.enabled를 true로 설정 &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;bull; spark.memory.offHeap.size에 원하는 크기 지정 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Spark 3.x의 Off heap memory 정리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Spark 3.x는 Off Heap memory 작업에 최적화&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;JVM&amp;nbsp;없이&amp;nbsp;직접&amp;nbsp;메모리&amp;nbsp;관리&amp;nbsp;가능&amp;nbsp;(&lt;a href=&quot;https://www.databricks.com/blog/2015/04/28/project-tungsten-bringing-spark-closer-to-bare-metal.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;프로젝트&amp;nbsp;텅스턴&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Spark 3.x는 Off Heap 메모리를 DataFrame용으로 사용&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;GC의&amp;nbsp;발생을&amp;nbsp;줄일&amp;nbsp;수&amp;nbsp;있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;즉 Off Heap 메모리의 크기는&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;spark.executor.memoryOverhead&amp;nbsp;+&amp;nbsp;spark.offHeap.size &lt;br /&gt;● spark.offHeap.size를 사용해서 executor memory의 증가없이 off heap 메모리 증가가 가능 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>SparkML</category>
      <author>터칭 데이터</author>
      <guid isPermaLink="true">https://touchingdata.tistory.com/409</guid>
      <comments>https://touchingdata.tistory.com/409#entry409comment</comments>
      <pubDate>Mon, 5 Feb 2024 14:06:33 +0900</pubDate>
    </item>
    <item>
      <title>Spark Scheduler</title>
      <link>https://touchingdata.tistory.com/408</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;Spark&amp;nbsp;고급과&amp;nbsp;Spark&amp;nbsp;ML&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Shuffling시&amp;nbsp;Skew&amp;nbsp;처리방식과&amp;nbsp;Spark&amp;nbsp;ML에&amp;nbsp;대해&amp;nbsp;배워보자&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Contents&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;1.&amp;nbsp;Spark&amp;nbsp;기타&amp;nbsp;기능과&amp;nbsp;메모리&amp;nbsp;관리&lt;br /&gt;2.&amp;nbsp;Spark&amp;nbsp;Shuffling&amp;nbsp;최적화&lt;br /&gt;3.&amp;nbsp;Spark&amp;nbsp;Partition&amp;nbsp;학습&lt;br /&gt;4.&amp;nbsp;Spark&amp;nbsp;ML&amp;nbsp;소개와&amp;nbsp;ML&amp;nbsp;모델&amp;nbsp;빌딩&lt;br /&gt;5.&amp;nbsp;ML&amp;nbsp;Pipeline과&amp;nbsp;Tuning&amp;nbsp;소개와&amp;nbsp;실습&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;기타 기능/개념 살펴보기&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자주 필요하지는 않지만 알아두면 좋은 기능들을 살펴보자&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Spark Scheduler란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;하나의 Spark Application내의 잡들에 리소스를 나눠주는 정책&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;Spark&amp;nbsp;Application들간에&amp;nbsp;리소스를&amp;nbsp;나눠주는&amp;nbsp;방식은&amp;nbsp;리소스&amp;nbsp;매니저에게&amp;nbsp;달려있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;다음 2 가지가 존재&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;&amp;ldquo;FIFO&amp;rdquo;&amp;nbsp;(기본) &lt;br /&gt;&amp;nbsp; &amp;nbsp; ▪ 리소스를 처음 요청한 Job에게 리소스 우선 순위가 감 &lt;br /&gt;●&amp;nbsp;&amp;ldquo;FAIR&amp;rdquo;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; ▪ 라운드로빈 방식으로 모든 잡에게 고르게 리소스를 분배하는 방식 &lt;br /&gt;&amp;nbsp; &amp;nbsp; ▪ 이 안에서 풀(Pool)이란 형태로 리소스를 나눠서 우선순위 고려한 형태로 사용 가능 &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;bull; 풀안에서 리소스 분배도 FAIR 혹은 FIFO로 지정 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Scheduler를 활용한 병렬성 증대&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;병렬성 증대 -&amp;gt; Thread 활용이 필요&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;이는&amp;nbsp;FAIR&amp;nbsp;모드의&amp;nbsp;스케줄러일&amp;nbsp;경우&amp;nbsp;더&amp;nbsp;효과적&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;관련 환경 변수&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;spark.scheduler.mode:&amp;nbsp;FIFO&amp;nbsp;(기본)&amp;nbsp;혹은&amp;nbsp;FAIR&amp;nbsp; &lt;br /&gt;●&amp;nbsp;spark.scheduler.allocation.file:&amp;nbsp;&amp;ldquo;FAIR&amp;rdquo;은&amp;nbsp;경우&amp;nbsp;필요하며&amp;nbsp;풀을&amp;nbsp;정의해놓는&amp;nbsp;형태로&amp;nbsp;사용됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;a href=&quot;https://github.com/learn-programmers/sktelecom-data-edu/blob/main/advanced_week1/fifo.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;스케줄러 데모 (스레드 사용)&lt;/a&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>SparkML</category>
      <author>터칭 데이터</author>
      <guid isPermaLink="true">https://touchingdata.tistory.com/408</guid>
      <comments>https://touchingdata.tistory.com/408#entry408comment</comments>
      <pubDate>Mon, 5 Feb 2024 13:40:26 +0900</pubDate>
    </item>
    <item>
      <title>Resource Dynamic Allocation</title>
      <link>https://touchingdata.tistory.com/407</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;Spark&amp;nbsp;고급과&amp;nbsp;Spark&amp;nbsp;ML&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Shuffling시&amp;nbsp;Skew&amp;nbsp;처리방식과&amp;nbsp;Spark&amp;nbsp;ML에&amp;nbsp;대해&amp;nbsp;배워보자&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000;&quot; data-ke-size=&quot;size26&quot;&gt;Contents&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;1.&amp;nbsp;Spark&amp;nbsp;기타&amp;nbsp;기능과&amp;nbsp;메모리&amp;nbsp;관리&lt;br /&gt;2.&amp;nbsp;Spark&amp;nbsp;Shuffling&amp;nbsp;최적화&lt;br /&gt;3.&amp;nbsp;Spark&amp;nbsp;Partition&amp;nbsp;학습&lt;br /&gt;4.&amp;nbsp;Spark&amp;nbsp;ML&amp;nbsp;소개와&amp;nbsp;ML&amp;nbsp;모델&amp;nbsp;빌딩&lt;br /&gt;5.&amp;nbsp;ML&amp;nbsp;Pipeline과&amp;nbsp;Tuning&amp;nbsp;소개와&amp;nbsp;실습&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;기타 기능/개념 살펴보기&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자주 필요하지는 않지만 알아두면 좋은 기능들을 살펴보자&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Spark의 리소스 할당 (스케줄링)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Spark Application들간의 리소스 할당&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;기반이&amp;nbsp;되는&amp;nbsp;리소스&amp;nbsp;매니저가&amp;nbsp;결정 &lt;br /&gt;&amp;nbsp; &amp;nbsp; ▪ YARN은 세 가지 방식 지원: FIFO, FAIR, CAPACITY &lt;br /&gt;●&amp;nbsp;한번&amp;nbsp;리소스를&amp;nbsp;할당받으면&amp;nbsp;해당&amp;nbsp;리소스를&amp;nbsp;끝까지&amp;nbsp;들고&amp;nbsp;가는&amp;nbsp;것이&amp;nbsp;기본&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;하나의 Spark Application안에서 잡들간의 리소스 할당&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;FIFO&amp;nbsp;형태로&amp;nbsp;처음&amp;nbsp;잡이&amp;nbsp;필요한대로&amp;nbsp;리소스를&amp;nbsp;받아서&amp;nbsp;쓰는&amp;nbsp;것이&amp;nbsp;기본&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Spark Application의 리소스 요구/릴리스 방식&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Static Allocation (기본 동작)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;Spark&amp;nbsp;Application은&amp;nbsp;리소스&amp;nbsp;매니저로부터&amp;nbsp;(YARN)&amp;nbsp;받은&amp;nbsp;리소스를&amp;nbsp;보통&amp;nbsp;끝까지&amp;nbsp;들고감 &lt;br /&gt;●&amp;nbsp;이는&amp;nbsp;리소스&amp;nbsp;사용률에&amp;nbsp;악영향을&amp;nbsp;줄&amp;nbsp;가능성이&amp;nbsp;높음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Dynamic Allocation&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;●&amp;nbsp;Spark&amp;nbsp;Application이&amp;nbsp;상황에&amp;nbsp;따라&amp;nbsp;executor를&amp;nbsp;릴리스하기도&amp;nbsp;하고&amp;nbsp;요구하기도&amp;nbsp;함 &lt;br /&gt;● 다수의 Spark Application들이 하나의 리소스 매니저를 공유한다면 활성화하는 것이 좋음&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;spark-submit &amp;mdash;num-executors 100 &amp;mdash;executor-cores 4 &amp;mdash;executor-memory 32G&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Static Allocation vs. Dynamic Allocation&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;spark-submit &amp;mdash;num-executors 100 &amp;mdash;executor-cores 4 &amp;mdash;executor-memory 32G&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1495&quot; data-origin-height=&quot;675&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwfcX5/btsEuAm817t/GfWcLLpKMTp7pk2NmTVD60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwfcX5/btsEuAm817t/GfWcLLpKMTp7pk2NmTVD60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwfcX5/btsEuAm817t/GfWcLLpKMTp7pk2NmTVD60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwfcX5%2FbtsEuAm817t%2FGfWcLLpKMTp7pk2NmTVD60%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1495&quot; height=&quot;675&quot; data-origin-width=&quot;1495&quot; data-origin-height=&quot;675&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Dynamic Resource Allocation&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Dynamic Resource Allocation은 아래 환경변수들로 제어&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;spark.dynamicAllocation.enabled = true &lt;br /&gt;spark.dynamicAllocation.shuffleTracking.enabled&amp;nbsp;=&amp;nbsp;true &lt;br /&gt;spark.dynamicAllocation.executorIdleTimeout&amp;nbsp;=&amp;nbsp;60s&amp;nbsp;(릴리스&amp;nbsp;타이밍&amp;nbsp;결정) &lt;br /&gt;spark.dynamicAllocation.schedulerBacklogTimeout&amp;nbsp;=&amp;nbsp;1s&amp;nbsp;(요청&amp;nbsp;타이밍&amp;nbsp;결정)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;spark.dynamicAllocation.minExecutors &lt;br /&gt;spark.dynamicAllocation.maxExecutors &lt;br /&gt;spark.dynamicAllocation.initialExecutors &lt;br /&gt;spark.dynamicAllocation.executorAllocationRatio&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://spark.apache.org/docs/latest/configuration.html#dynamic-allocation&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://spark.apache.org/docs/latest/configuration.html#dynamic-allocation&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>SparkML</category>
      <author>터칭 데이터</author>
      <guid isPermaLink="true">https://touchingdata.tistory.com/407</guid>
      <comments>https://touchingdata.tistory.com/407#entry407comment</comments>
      <pubDate>Mon, 5 Feb 2024 13:35:51 +0900</pubDate>
    </item>
  </channel>
</rss>