[PySpark 개념 2] Spark Connect

sosimeow·2023년 6월 25일
0

Data Engineering

목록 보기
2/6

PySpark docs Quickstart Spark Connect 내용 번역 겸 정리를 통해 개념을 확실히 해보자~! (1에 비해 내용이 짧음,,)

https://spark.apache.org/docs/latest/api/python/getting_started/quickstart_connect.html

Spark Connect

Spark Connect 는 Spark 에 decoupled client-server architecture 를 도입했다. 이는 DataFrame API 를 통해 Spark clusters 에 remote connectivity(원격 연결)을 가능하게 한다.

아래에서 Spark Connect 를 application 타입에 관계 없이 빌드하는 간단한 방법을 알아보자.

Spark Connect 는 client 와 server components 를 모두 갖고 있고, 두 가지 모두 셋업하고 사용하는 방법을 알아 보자.


Launch Spark server with Spark Connect

Spark Connect sessions 로 Spark 를 launch 하기 위해, start-connect-server.sh script 를 실행하자.

!HOME/sbin/start-connect-server.sh --packages org.apache.spark:spakr-connect_2.12:$SPARK_VERSION

Connect to Spark Connect server

위 cell 실행으로 Spark server 는 running 되고 있고, Spark Connect 를 사용해 원격으로 connect 가능하다.

application 이 실행되고 있는 client 에서 remote Spark session 을 생성해서 Spark server 에 원격 접속을 할 수 있다.

위 작업을 하기 전에, 기존의 regular Spark session 을 중지했는지 확인이 필요하다. (reqular Spark session 은 우리가 생성하려는 remote Spark Connect 와 공존할 수 없기 때문)

from pyspark.sql import SparkSession

SparkSession.builder.master("local[*]").getOrCreate().stop()
# The command we used above to launch the server configured Spark to run as localhost:15002. So now we can create a remote Spark session on the client using the following command.
spark = SparkSession.builder.remote("src://localhost:15002").getOrCreate()

Create DataFrame

remote Spark session 이 성공적으로 생성 되었으면, regular Spark session 처럼 사용할 수 있다.
이제 아래 command 처럼, DataFrame 을 만들어 보자!

from datetime import datetime, date
from pyspark.sql import Row

df = spark.createDataFrame([
	Row(a=1, b=2., c='string1', d=date(2000, 1, 1), e=datetime(2000, 1, 1, 12, 0)),
    Row(a=2, b=3., c='string2', d=date(2000, 2, 1), e=datetime(2000, 1, 2, 12, 0)),
    Row(a=4, b=5., c='string3', d=date(2000, 3, 1,), e=datetime(2000, 1, 3, 12, 0))
])
df.show()


profile
데이터 엔지니어 ing

0개의 댓글