본문 바로가기

Study/Bigdata

Pyspark로 Spark on Yarn Code --1(개발환경구성)

Spark로 개발하는 방법에는 여러가지가 있지만, 일단은 PySpark를 사용하고 있습니다 


다른 이유보다 너무 쉽게 됩니다.


현재 개발환경은, 개발서버에 Pycham 이 Direct로 붙는다는 환경이고 방화벽등의 환경에서는 달라질수 있습니다 


먼저 제 환경은 다음과 같습니다


개발툴 : Pycham Professional 

  - 서버의 파이썬 리모트 인터프리터 사용 

  - 시스템 기본 파이썬 인터프리터 사용


플랫폼 : HDP(Hortonworks Data Platform) 3.0.1




import os
import sys

os.environ['SPARK_HOME'] = "/usr/hdp/3.0.1.0-187/spark2"
os.environ['HIVE_HOME'] = "/usr/hdp/3.0.1.0-187/hive"
os.environ["HADOOP_USER_NAME"] = "spark"
os.environ['PYSPARK_SUBMIT_ARGS'] = '--master yarn --deploy-mode client ' \
'--num-executors 11 --executor-memory 19G --executor-cores 5 ' \
'--driver-memory 1G pyspark-shell'
sys.path.append("/usr/hdp/3.0.1.0-187/spark2/python")

from pyspark.sql import SparkSession
from pyspark.sql.functions import *

spark = SparkSession.builder.appName("pySpark1_redeyesofangel").getOrCreate()
spark.sql("select current_timestamp() ").show()
spark.stop()





소스는 매우 간단합니다. 해당코드는 Yarn client 모드로 동작하게 됩니다.  execturor 및 core는 각 클러스터 성능에 따라 맞춰주시면 됩니다.

 

기본적으로 서버에서 제공하는 파이썬 인터프리터를 사용할때(본예제에서는 우분투 16.04의 Python 2.7 사용중) pip install py4j 는 설치먼저 하셔야 합니다. 


단순히 해당 코드는 현재시간을 보여주는 코드입니다. Pycham에서 바로 run을 하면 다음과 같은 결과를 볼수 있습니다 




ssh://dev@192.168.0.140:22/usr/bin/python -u /tmp/pycharm_project_484/pySpark_1.py

Setting default log level to "WARN".

To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).

+--------------------+

| current_timestamp()|

+--------------------+

|2018-11-29 17:27:...|

+--------------------+



Process finished with exit code 0






다음에는 틈틈히 HIVE 연결, 데이터프레임 사용등등 올려보도록 하겠습니다