2021. 7. 22. 17:09ㆍ카테고리 없음
금일은 spark 개발환경을 구축해보겠다.
매번 개인 PC에서 Spark개발 환경을 구성했다.
그때마다 환경 변수 잡는게 너무 귀찮았다.
그리고 꼭 한번에 되지 않는다.
( windows 어려워.. )
심지어 spark 개발자를 키우기도 해야하는 입장에서
개발환경을 잡는것은 참으로 귀찮은 일이다.
그러다가 갑자기 구글이 제공하는 colab에서 구축할 수있지 않을까 라는 생각을 했다.
colab이란 구글이 제공해주는 python개발 환경이다.
구글 아이디만 있으면, python 개발 환경을 무료로 사용할 수 있다.
분석팀 대리가 알려준 환경인데, 꽤 쓸만하다.
그럼 한번 초간단 spark 개발화경을 구축해보겠다.
0. colab를 시작한다.
python 개발자라면 알것이다. 딱 jupyter notebook이다 ㅋㅋ
즉, jupyter notebook이랑 사용하는 방법이 동일하다.
이제 이제 제공하는 명령어들을 아래와 같이 입력하고, [ shift + enter ]를 누르면 된다.
위 명령어는 아래 제공해 줄테니, 사진보고 따라 쓸 필요없다.
나는 누구보다 [ 복사 / 붙여넣기 ]를 사랑한다.
1. jdk를 다운 받는다.
!apt-get install openjdk-8-jdk-headless |
2. spark 를 다운 받는다.
최근에 나온 spark는 3.1.2 버전이니 해당 버전을 설치하겠다.
!wget -q https://mirror.navercorp.com/apache/spark/spark-3.1.2/spark-3.1.2-bin-hadoop3.2.tgz |
3. spark를 압축을 푼다.
!tar -xvf spark-3.1.2-bin-hadoop3.2.tgz |
4. findspark를 설치해 준다.
종종 spark를 찾지 못해서, import 에러가 난다.
findspark는 이러한 에러를 예방해주고, spark를 자동으로 찾아준다.
!pip install findspark |
5. spark 환경 설정을 해준다.
java와 spark 환경을 잡아준다. 아래 명령어를 입력하면 쉽게 등록이 된다.
import os os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8-openjdk-amd64" os.environ["SPARK_HOME"] = "/content/spark-3.1.2-bin-hadoop3.2" |
이게 스파크 개발 환경 구축이 끝이다.
정말 쉽고 빠르게 할 수 있다.
후임들 알려줄때도 이보다 쉬운게 없는거 같다.
그럼 이제 잘 돌아가는지 가볍게 테스트를 해보자.
6. spark 샘플 코드
6-1. findspark를 해준다.
import findspark findspark.init() |
6-2. pyspark를 선언해준다.
import pyspark spark = pyspark.sql.SparkSession.builder.appName("test").master("local[*]").getOrCreate() |
6-3. 샘플 데이터를 만들어 준다.
a = [{"plantcd" : "공장", "eventdtm" : "20210518154548", "tagGroup" : { "b" : "2", "a" : 1, } }, {"plantcd" : "공장", "eventdtm" : "20210518154550", "tagGroup" : { "b" : 10, "a" : '9', "c" : '11', } } ] |
6-4. StructField를 만들어 준다.
df_schema = pyspark.sql.types.StructType( [ pyspark.sql.types.StructField("plantcd", pyspark.sql.types.StringType(), True), pyspark.sql.types.StructField("eventdtm", pyspark.sql.types.StringType(), True), pyspark.sql.types.StructField("tagGroup", pyspark.sql.types.MapType( pyspark.sql.types.StringType(), pyspark.sql.types.String Type()), True) ] ) |
6-5. DataFrame를 선언하고 데이터를 확인해 본다.
data_test = spark.createDataFrame(data = a , schema = df_schema) data_test.show() |
아래와 같은 결과가 나왔으면 성공이다!!!
6-6. 한김에 spark sql 까지 날려보자. createOrReplaceTempView를 선언을 해준다.
data_test.createOrReplaceTempView("table_name") |
6-7 sql를 날려본다.
json으로 데이터가 들어갔으니, 못생긴 데이터를 살짝 파싱해준다.
table_name= spark.sql(""" SELECT eventdtm, plantcd, explode( tagGroup ) FROM table_name """) |
6-8. 데이터를 확인한다.
table_name.show() |
작업이 완료했다.
쉽다. 환경설정도 쉽고, 누구나 따라할 수 있다. 그리고 잘 돌아간다.!!!
단점은 몇가지가 있는데....
싱글 서버라는 거랑....
매번 위 명령어 1~6번까지 실행해 주어야 한다는 거다..
빠르게 작업이 끝나서 큰 문제는 없지만...
귀찮은 작업이 싫다면,,,
서버를 구매하든, 클라우드 서비스를 활용해 사용하는걸 추천한다..
이만 끝!!