본문 바로가기

[Spark] 여러개의 로그 파일 한번에 읽어오기 제플린 노트북에서 데이터 소스를 가져올 때, DataFrameReader Class를 주로 사용한다. 아래의 코드 처럼, DataFrameReader의 함수들을 사용해서 구조화되어있는 파일을 읽어들이면 DataFrame을 리턴된다. spark.read.json("s3n://jimin-bucket/a/*") spark.read.parquet("s3n://jimin-bucket/a/*") 그런데 파일을 하나하나 가져오기 보다는 여러 파일리스트를 한번에 가져오고 싶을 때가 있다.이때는 MutableList에 파일 목록들을 담아서, 이를 매개변수로 보내주면 된다. -----------------------------------------------------------------------------------..
[Spark] S3에 파일이 존재하는지 확인하기 Zeppelin 노트북에서 데이터소스를 불러올 때, AWS S3에 올려둔 파일들을 가져다가 사용한다.그런데 만약 없는 파일을 읽어들이려고 하는 경우, 에러가 발생한다.만약 일자별로 쌓인 로그 파일을 한번에 가져와서 읽을 필요성이 있다고 생각해보자. val fileList = MutableList("s3n://jimin-bucket/folder1/20170202/*", "s3n://jimin-bucket/folder1/20170203/*", "s3n://jimin-bucket/folder1/20160204/*") spark.read.json(fileList:_*) 만약 20170203 폴더에 file1이 없는 경우, 파일을 읽어들일 수 없어 에러가 난다.이런 경우, fileList 변수에는 실제로 존재하는..
엔지니어 관점에서 AdExchange 이해하기 (2) - OpenRTB 이전 포스팅에 이어서, AdExchange에서 사용하는 인터페이스인 OpenRTB에 대한 이야기를 할까 한다. OpenRtb의 필요성 이전에 이야기한 것처럼 AdNetwork간에서 광고를 서로 사고, 팔아야하는 필요성이 생겨서, AdExchange라는 개념이 생겼다.그러면서 서로 광고를 교환하기 위한 표준 인터페이스의 필요성이 생겨났다. 애드 익스체인지가 발전하면서 여러 애드네트워크들 간에, 혹은 여러 익스체인지들 간에 광고 교환 작업들이 발생하게 되었는데,이 때마다 서로 어떤 파라미터를 던져주면, 어떤 Result 값을 리턴해줄지 조정하는 작업들이 필요하게 되었다. 그때마다 서로 인터페이스를 맞추기는 번거로웠다. 그리고 한 업체와 포맷을 맞추고, 또 다른 업체와 연동을 하려면 또다시 위의 인터페이스 조..
엔지니어 관점에서 AdExchange 이해하기 (1) 나는 애드네트워크 서비스를 만들고 있다.그러던 중 최근 AdExchange 연동 작업을 진행하면서, AdExchange에 대해서 공부하게 되었다. AdNetwork 사의 관점에서 AdExchange 이해하기AdExchage란 AdNetwork 간에 남은 광고물량을 교환할 수 있도록 시스템화한 것을 의미한다. 예를 들면 카울리, FAN 같은 애드네트워크사인 A사가 광고 1개를 100개의 노출(Impression)을 해주기로 했다고 생각해보자.그런데 A사의 SDK를 심은 매체(Direct Publisher)에서 발생하는 Request 수가 80개라고 생각해보자.이 경우, A사는 결국 광고를 20번 더 노출 시켜야하지만, 20회의 노출을 추가적으로 발생시킬 수 없는 상황이 된거다.즉, 광고 수주를 아무리 잘해..
레일즈 엔진 (Rails Engine) 레일즈 애플리케이션 프로젝트가 여러개 있을 때, 공통으로 사용하는 함수나 상수가 있으면 ruby gem을 사용하면 된다. 그런데 공통으로 사용하는 view가 여러개 있으면 어떻게 할까?공통으로 사용하는 함수가 Model이라면?공통으로 사용하는 함수가 레일즈를 기반으로한다면? 이럴 때는 Gem으로 공통 라이브러리를 관리하기에는 한계가 있다. 이런 상황에 필요한 레일즈 기능은 Engine이다. 처음에 레일즈 Engine을 알게된 배경은, 리멤버의 블로그를 통해서였다.리멤버 개발 블로그 - Rails Engine을 이용한 Zeus 프로젝트 레일즈 엔진은 레일즈를 모듈처럼 쪼개놓은 것 같은 느낌이다.내가 만들고 있는 레일즈 애플리케이션에 엔진을 끼워넣는 느낌으로 사용하는거다.- 공통적으로 사용하는 컨트롤러를 만..
레일즈4 + Mass Assignment + Strong Parameter MassAssignmentMassAssignment가 발생할 수 있는 상황 class UserController
리팩토링:루비에디션 오늘부터 읽고있는중...!! 루비 기반 리팩토링 책은 다 번역이 엉망이라서 쳐다도 안봤는데, 읽어보니 번역이 매끄러워서 술술 익힌다 ㅎㅅㅎ 회사에서 일하면서 배운, 리팩토링에 대한 사고방식이랑 같은 내용이 들어가있어서 더 재미있게 잘읽힌다 ㅎㅎ 책을 읽으면서 궁금했던 것들 리스트 * each루프 대신, inject 같은 메서드를 사용하는 것의 장점은 ? ( p. 27, Replace Loop with Collection ) - 간단하다는 점의 구체적인 이유는?
애드네트워크 / 애드테크란? 다음주부터 애드네트워크 사업부에서 근무하게 되었다 ㅎ0ㅎ 애드테크란 무엇인지 주말에 찾아서, 정리해보려고 한다. 애드테크 슬라이드 쉐어 자료 데이나의 참쉬운 애드테크 (20150419) from Dayeon Jeong ( 정리가 엄청 잘되어있어서 머리에 쏙쏙 들어온다 ! )