본문 바로가기

Spark

[부록] ALS in Spark 튜닝하기 또! 오랜만에 글을 적네요 +_+요새 정말 마니 바쁘네요 ㅠㅠ 다시 한번 말씀드리지만 ㅋㅋ사실 이 블로그는 제 개인적으로 공부 & 기록 을 위함의 용도가 커서막 깔끔하게 정리하지는 못했다는 생각이 많이 드네요. 블로그 외부에 노출되면 제 분신과 같다는 느낌이 많이 들어둘로 나눠 공부용과 대외 노출용으로 가기로 결정했습니다. 그래서 해당 내용은 아래 블로그에 쫌 정갈하게 기재하고자 노력했습니다 :)https://ggoals.github.io/Spark_ALS_Algorithm_tuning/ 감사합니다!! ㅎㅎ 더보기
[부록] scala-spark-big-data with coursera Scala - Basics of Functional Programming - Parallelism Spark - Not a machine learning or data science course! - distributed data parallelism in Spark - familiar funcitonal abstractions like functional lists over large clusters. - Context: analyzing large data sets. Why Scala? Why Spark?Normally - R / Python / MATLAB etc..But!If your data set ever gets too large to fit into memory?there is also t.. 더보기
[부록] Performance Tuning of an Apache Kafka/Spark Streaming System 원문글 - https://www.javacodegeeks.com/2017/01/performance-tuning-apache-kafkaspark-streaming-system.html 이 글은 Kafka 같은 MapR 과 같은 시스템으로 확장해 나갈때 도움이 되는 글입니다.( 말을 아주 매력적으로 잘 쓰심.. ㅋㅋ ) Goal of the system이제 이 글은 telecom company 를 예시로 들고 있는데, 고객의 데이터를 받아서 바로 고객이 가지고 있는 불만사항의 원인과 해결책을 대응해줘야 하는 시스템을 구축하는데 있어 빠르게 로그 수집 및 분석이 이루어 져여 하는 상황이 있었다. 보통의 Batch job 보다 이런 시스템을 이용해서 Realtime Working 을 가능하게 한다는건 고객 서.. 더보기
[부록] Jupyter ( IPython ) 에서 pyspark 사용하기 참조 링크 : http://blog.cloudera.com/blog/2014/08/how-to-use-ipython-notebook-with-apache-spark/ 일단 IPython 과 PySpark 가 깔려 있어야 한다. $ ipython profile create pyspark 이라고 치면 ~/.ipython/profile_pyspark 라는 폴더가 자동으로 생성되고 안에 내용이 채워진다. 그럼 config 파일을 열고 ( 위 사이트처럼 ipython_notebook_config.py 파일을 생성해도 되고 그냥 ipython_config.py 에 잘 써넣어도 된다. ) c.NotebookApp.ip = '*' c.NotebookApp.open_browser = False c.NotebookApp... 더보기
3. Spark SQL, DataFrames and Datasets Spark 에서도 데이터를 SQL 문을 이용해서 데이터를 Query 할 수 있는데, 그 부분에 대해서 간단하게 얘기해 보려고 한다. 기본적으로 SQL 로 Query 한 데이터는 DataFrame 이라는 데이터 형태로 데이터를 Return 한다. DataFrame 은 스파크에서 분산처리를 위해 만든 컬럼이 존재하는 분산 콜렉션이다. 사실 뭔가 업무할 때 ( 코딩할 때 ) 필요한 것만 적을거라 더이상의 자세한 설명은 빼고 아래 코드로 대체 하겠다. # sc is an existing SparkContext. from pyspark.sql import SQLContext, Row sqlContext = SQLContext(sc) # Load a text file and convert each line to a.. 더보기
개발환경 셋팅하기 with pycharm 와씨... 2시간동안 삽질하고 답을 결국 못찾음... 인터프리터 언어에서 자동완성을 찾는 나도 참 어리석지만서도... ㅜㅠ 게을러지고 싶어서 했다가.... ㅋㅋ 다른건 그닥 없을거고 virtual env 환경만 최대한 서버의 python 버전과 맞춰주고( 왜냐면 파이썬이 2와 3이 아키텍처가 다르다고 함 - 저도 이거 들은 얘기라 나중에 기회되면 어떤 차이점이 있는지 꼭 찾아보고 정리하겠습니다!! ) File > Default Preference 에 들어가서 ( 맥에서는 단축키가 command + , 입니다 ) 해서 맞는 버전에 python 경로를 찾아 선택해 주면 됩니다! ㅎㅎ 그리고 코드는 일단... 빨간줄이 가는건 너무 싫으니 ㅜㅠ 아래와 같이! #!/usr/bin/env python # codin.. 더보기
2-2.RDD - Operations Passing Functionclass MyClass(object): def func(self, s): return s def doStuff(self, rdd): return rdd.map(self.func) 위와 같이 map 이라는 함수 ( 정확히 말하면 RDD Transformations ) 을 실행할 때 func 를 변수로 넘길 수 있다. 하지만 python 에서 제공하는 lambda 를 이용해 익명함수로 넘기는것도 아래와 같이 가능하다. class MyClass(object): def __init__(self): self.field = "Hello" def doStuff(self, rdd): return rdd.map(lambda s: self.field + s) Key-Value Pairs RD.. 더보기
2-1. RDD - Parallelized Collections, External Datasets RDDs를 만드는 방법에는 2가지가 있다.하나는 Parallelized Collections 이고, External Datasets 이다. 1. Parallelized Collections - SparkContext’s parallelize 함수 호출을 통해 만든다. 드라이버 프로그램 내에 존재하는 객체를 RDD 로 만드는 것이다. data = [1, 2, 3, 4, 5] distData = sc.parallelize(data) 2. External Datasets스파크는 분산 데이터 셋 ( ex. HDFS, Cassandra, HBase 등 ) 으로부터 RDD 를 생성할 수 있다. >>> distFile = sc.textFile("data.txt") 이런식으로 연산에 필요한 객체, 데이터 등을 Spar.. 더보기
2. RDD 스파크에선 RDD 라는 개념이 굉장히 중요한듯..!! RDD : Resilent Distributed Dataset 뭔가 .. 의역하면 회복력있는 분포된 데이터집합!! 스파크에서는 모든 작업은 새로운 RDD 를 만들거나, 존재하는 RDD를 변형하거나, 결과 계산을 위해 RDD에서 연산을 호출하는 것 중의 하나로 표현된다. 그리고 내부적으로 스파크는 자동으로 RDD에 있는 데이터들을 클러스터에 분배하여 클러스터 위에서 수행하는 연산들을 병렬화한다. 스파크의 RDD는 단순하게 말하면 분산되어 있는 변경 불가능한 객체 모음이다. RDD는 클러스터의 서로 다른 노드들에서 연산 가능하도록 여러개의 파티션( partition )으로 나뉜다. 이 멘트 엄청 핵심포인트 인듯...!! 분산된 데이터를 다시 파티션으로 나.. 더보기
1. spark 설치하기 Spark 다운로드 경로 URL : http://spark.apache.org/downloads.html 2. Choose a package type 에서 꼭 Pre-built 버전으로 체크하길...!! ㅎㅎ 그리고 해당 폴더에 가서 pyspark 를 실행시키면! 아래처럼 뜹니다!( 아 .. 참고로 전 python 으로 spark 를 쓸거라서 pyspark 를 실행시켜보았습니다!! scala 로 하실분들은 pyspark 대신에 spark-shell 로 실행시켜 주세요! ㅎㅎ ) 끝!! 더보기
0. Spark ( Lightning-fast cluster computing ) 스파크... 공부는 해야 되는데 뭔가 좋다라는 얘기만 듣고 뭔지 몰라서일단 공식 사이트 부터 접속해 보았다!! "스파크는 빠르고 큰 사이즈의 데이터를 처리할때 쓰는 일반적인 엔진이다." 모든 사이트들이 그러하듯이 설명만큼은 굉장히 장황한 것을 볼수 있다... +_+ ㅋㅋ 1. 빠르다 2. 사용하기 쉽다 3. 일반적이다(?) 보편적이다(?) - 머라고 해야할지;; ㅋㅋ 4. 어디서건 다 돌아간다! 더보기