PySpark 자습서 – Python을 사용하여 Apache Spark 배우기



PySpark Tutorial의이 블로그에서는 Python 프로그래밍 언어를 사용하여 Apache Spark와 함께 작동하는 데 사용되는 PSpark API에 대해 알아 봅니다.

이러한 놀라운 속도로 데이터가 생성되는 세상에서 해당 데이터를 정확한 시간에 정확하게 분석하는 것은 매우 유용합니다. 실시간으로 빅 데이터를 처리하고 분석을 수행하는 가장 놀라운 프레임 워크 중 하나는 Apache Spark입니다.함께, 또는 PySpark는 가장 인기있는 인증 과정 중 하나이며 Scala for Spark는 비용을 절감 할 수 있습니다.. 그래서 이것에 PySpark 튜토리얼 블로그에서 다음 주제에 대해 설명하겠습니다.





PySpark 자습서 : PySpark 란 무엇입니까?

Apache Spark는 빅 데이터를 처리, 쿼리 및 분석하는 데 사용되는 빠른 클러스터 컴퓨팅 프레임 워크입니다. 인 메모리 계산을 기반으로하기 때문에 다른 여러 빅 데이터 프레임 워크에 비해 이점이 있습니다.

PySpark 기능-PySpark 튜토리얼-Edureka



원래 Scala 프로그래밍 언어로 작성된 오픈 소스 커뮤니티는 Apache Spark 용 Python을 지원하는 놀라운 도구를 개발했습니다. PySpark는 데이터 과학자가 라이브러리를 통해 Apache Spark 및 Python의 RDD와 인터페이스하도록 지원합니다. Py4j. PySpark를 다른 프레임 워크보다 더 나은 프레임 워크로 만드는 많은 기능이 있습니다.

  • 속도: 기존의 대규모 데이터 처리 프레임 워크보다 100 배 빠릅니다.
  • 강력한 캐싱 : 간단한 프로그래밍 계층은 강력한 캐싱 및 디스크 지속 기능을 제공합니다.
  • 전개: Mesos, Yarn을 통한 Hadoop 또는 Spark의 자체 클러스터 관리자를 통해 배포 할 수 있습니다.
  • 실시간: 인 메모리 계산으로 인한 실시간 계산 및 낮은 대기 시간
  • 다국어 : Scala, Java, Python 및 R 프로그래밍 지원

PySpark 튜토리얼 블로그를 통해 업계에서 Spark가 사용되는 곳을 살펴 보겠습니다.

업계의 PySpark

모든 산업은 빅 데이터와 빅 데이터가있는 곳에서 분석이 필요합니다. 이제 Apache Spark가 사용되는 다양한 산업을 살펴 ​​보겠습니다.



절반 온라인 스트리밍으로 성장하는 가장 큰 산업 중 하나입니다. 넷플릭스 실시간 스트림 처리를 위해 Apache Spark를 사용하여 고객에게 개인화 된 온라인 권장 사항을 제공합니다. 그것은 처리 4,500 억 서버 측 애플리케이션으로 전달되는 일일 이벤트.

재원 Apache Spark의 실시간 처리가 중요한 역할을하는 또 다른 분야입니다. 은행은 Spark를 사용하여 소셜 미디어 프로필에 액세스하고 분석하여 올바른 비즈니스 결정을 내리는 데 도움이되는 통찰력을 얻고 있습니다. 신용 위험 평가 , 타겟 광고 및 고객 세분화. 고객 이탈 Spark를 사용하여 감소됩니다. 사기 감지 Spark가 관련된 머신 러닝에서 가장 널리 사용되는 영역 중 하나입니다.

보건 의료 공급자는 Apache Spark를 사용하여 환자 기록 분석 과거 임상 데이터와 함께 어떤 환자가 클리닉에서 퇴원 한 후 건강 문제에 직면 할 가능성이 있는지 식별합니다. Apache Spark는 게놈 시퀀싱 게놈 데이터를 처리하는 데 필요한 시간을 단축합니다.

소매 및 전자 상거래 분석 및 타겟 광고를 사용하지 않고는 실행되는 것을 상상할 수없는 산업입니다. 오늘날 가장 큰 전자 상거래 플랫폼 중 하나 알리바바 페타 바이트의 데이터를 분석하기 위해 세계에서 가장 큰 Spark 작업을 실행합니다. 알리바바는 특징 추출 이미지 데이터에서. 이베이 Apache Spark를 사용하여 타겟 오퍼 , 고객 경험을 향상시키고 전반적인 성능을 최적화합니다.

여행 업계에서는 Apache Spark도 사용합니다. 트립 어드바이저 , 사용자가 완벽한 여행을 계획 할 수 있도록 도와주는 최고의 여행 웹 사이트는 Apache Spark를 사용하여 맞춤형 고객 추천 .TripAdvisor는 Apache Spark를 사용하여 수백만 명의 여행자에게 다음과 같은 조언을 제공합니다. 수백 개의 웹 사이트 비교 고객에게 가장 적합한 호텔 가격을 찾을 수 있습니다.

이 PySpark 자습서의 중요한 측면은 Python을 사용해야하는 이유를 이해하는 것입니다. Java, Scala 또는 R이 아닌 이유는 무엇입니까?

새로운 업데이트를 받으려면 YouTube 채널을 구독하십시오 ..!


왜 파이썬을 선택해야합니까?

배우기 쉬움 : 프로그래머에게 Python은 구문과 표준 라이브러리로 인해 비교적 배우기 쉽습니다. 또한 동적으로 입력되는 언어이므로 RDD가 여러 유형의 개체를 보유 할 수 있습니다.

방대한 라이브러리 세트 : Scala에는 기계 학습 및 자연어 처리를위한 Python과 같은 데이터 과학 도구 및 라이브러리가 충분하지 않습니다. 게다가 Scala는 좋은 시각화 및 로컬 데이터 변환이 부족합니다.

거대한 커뮤니티 지원 : Python에는 수천 개의 가상 및 물리적 위치에서 온라인 및 오프라인으로 상호 작용하는 수백만 명의 개발자가있는 글로벌 커뮤니티가 있습니다.

이 PySpark 튜토리얼에서 가장 중요한 주제 중 하나는 RDD의 사용입니다. RDD가 무엇인지 이해합시다

Spark RDD

반복 분산 컴퓨팅 (예 : 계산에서 여러 작업에 대한 데이터 처리)의 경우 여러 작업간에 데이터를 재사용하거나 공유해야합니다. Hadoop과 같은 이전 프레임 워크는 다음과 같은 여러 작업 / 작업을 처리하는 동안 문제가있었습니다.

  • HDFS와 같은 중간 저장소에 데이터 저장
  • 여러 I / O 작업으로 인해 계산 속도가 느려집니다.
  • 복제 및 직렬화로 인해 프로세스가 더욱 느려집니다.

RDD는 내결함성 분산 인 메모리 계산을 활성화하여 모든 문제를 해결하려고합니다. RDD는 탄력적 인 분산 데이터 세트. RDD는 프로그래머가 내결함성 방식으로 대규모 클러스터에서 메모리 내 계산을 수행 할 수있는 분산 메모리 추상화입니다. 그들은 읽기 전용 개체 컬렉션 파티션이 손실 된 경우 재 구축 할 수있는 머신 세트에 걸쳐 분할됩니다. RDD에서 수행되는 몇 가지 작업이 있습니다.

스윙 자바 사용 방법
  • 변환 : 변환은 기존 데이터 세트에서 새 데이터 세트를 만듭니다. 게으른 평가
  • 행위: Spark는 RDD에서 작업이 호출 될 때만 계산을 강제 실행합니다.

몇 가지 변환, 동작 및 기능을 이해하겠습니다.

파일 읽기 및 상위 n 개 요소 표시 :

rdd = sc.textFile ( 'file : /// home / edureka / Desktop / Sample') rdd.take (n)

산출:

[u '삼림 벌채는 이제 강력한 악마 이상의 형태를 취한 주요 환경 및 사회 문제로 발생하고 있습니다. ', u'삼림 벌채로 인해 발생한 문제의 원인, 결과 및 해결 방법을 알아야합니다. ', u'우리는 자녀가 문제에 대해 인식하고 학교 또는 학교 밖에서 열리는 에세이 쓰기 대회에 참여할 수 있도록 돕기 위해 삼림 벌채에 대한 많은 단락, 길고 짧은 에세이를 제공했습니다. ', u'수업 기준에 따라 아래 주어진 산림 벌채 에세이를 선택할 수 있습니다. ', u'삼림 벌채가 사회와 환경의 주요 글로벌 문제로 발생하고 있습니다. ']

소문자로 변환 및 분할 : (Lower 및 Split)

def Func (lines) : lines = lines.lower () lines = lines.split () return lines rdd1 = rdd.map (Func) rdd1.take (5)

산출:

[[u '삼림 벌채', u'is ', u'arising', u'as ', u'the', u'main ', u'environmental', u'and ', u'social', u'issue ', u'which', u'has ', u'now', u'taken ', ...... . . ]

불용어 제거 :( 필터)

stop_words = [ 'a', 'all', 'the', 'as', 'is', 'am', 'an', 'and', 'be', 'been', 'from', 'had' , 'I', 'I 'd', 'why', 'with'] rdd2 = rdd1.filter (lambda z : z not in stop_words) rdd2.take (10)

산출:

[u '삼림 벌채', u'arising ', u'main', u'environmental ', u'social', u'issue ', u'which', u'has ', u'now', u'taken ' ]

1에서 500까지의 숫자 합계 : (줄이기)

sum_rdd = sc.parallelize (범위 (1,500)) sum_rdd.reduce (람다 x, y : x + y)

산출:

124750

PySpark를 사용한 기계 학습

PySpark 튜토리얼 블로그를 계속해서 일부 BasketBall 데이터를 분석하고 향후 예측을 수행해 보겠습니다. 그래서 여기서 우리는 NBA의 모든 선수들의 농구 데이터를 사용할 것입니다. 1980 년 [3 개의 포인터 도입 연도].

데이터로드 :

df = spark.read.option ( 'header', 'true') .option ( 'inferSchema', 'true') .csv ( 'file : ///home/edureka/Downloads/season_totals.csv')

인쇄 열 :

print (df.columns)

산출:

[ '_c0', 'player', 'pos', 'age', 'team_id', 'g', 'gs', 'mp', 'fg', 'fga', 'fg_pct', 'fg3', ' fg3a ','fg3_pct ','fg2 ','fg2a ','fg2_pct ','efg_pct ','ft ','fta ','ft_pct ','orb ','drb ','trb ','ast ' , 'stl', 'blk', 'tov', 'pf', 'pts', 'yr']

플레이어 (OrderBy) 및 toPandas 정렬 :

여기에서는 한 시즌의 점수를 기준으로 선수를 정렬합니다.

df.orderBy ( 'pts', ascending = False) .limit (10) .toPandas () [[ 'yr', 'player', 'age', 'pts', 'fg3']]

산출:

DSL 및 matplotlib 사용 :

여기서 우리는 3 점 시도 시간 제한에서 각 시즌 36 분 [적절한 휴식을 취한 대략적인 전체 NBA 경기에 해당하는 간격]. 3 점 필드 골 시도 횟수 (fg3a)와 플레이 시간 (mp)을 사용하여이 메트릭을 계산 한 다음 다음을 사용하여 결과를 플로팅합니다. matlplotlib .

from pyspark.sql.functions import col fga_py = df.groupBy ( 'yr') .agg ({ 'mp': 'sum', 'fg3a': 'sum'}) .select (col ( 'yr'), ( 36 * col ( 'sum (fg3a)') / col ( 'sum (mp)')). alias ( 'fg3a_p36m')) .orderBy ( 'yr') from matplotlib import pyplot as plt import seaborn as sns plt.style .use ( 'fivethirtyeight') _df = fga_py.toPandas () plt.plot (_df.yr, _df.fg3a_p36m, color = '# CD5C5C') plt.xlabel ( 'Year') _ = plt.title ( '플레이어 평균 3 점 시도 (36 분당) ') plt.annotate ('3 포인터 도입 ', xy = (1980, .5), xytext = (1981, 1.1), fontsize = 9, arrowprops = dict (facecolor ='grey ', 축소 = 0, 선폭 = 2)) plt.annotate ('NBA 이동 3 점 선 ', xy = (1996, 2.4), xytext = (1991.5, 2.7), fontsize = 9, arrowprops = dict (facecolor = 'grey', shrink = 0, linewidth = 2)) plt.annotate ( 'NBA가 3 포인트 라인 뒤로 이동', xy = (1998, 2.), xytext = (1998.5, 2.4), fontsize = 9, arrowprops = dict (facecolor = 'grey', 축소 = 0, 선폭 = 2))

산출:

선형 회귀 및 VectorAssembler :

이 곡선에 선형 회귀 모델을 적용하여 향후 5 년 동안의 샷 시도 횟수를 모델링 할 수 있습니다. VectorAssembler 함수를 사용하여 데이터를 단일 열로 변환해야합니다. 이것은 요구 사항 MLlib의 선형 회귀 API 용.

from pyspark.ml.feature import VectorAssembler t = VectorAssembler (inputCols = [ 'yr'], outputCol = 'features') training = t.transform (fga_py) .withColumn ( 'yr', fga_py.yr) .withColumn ( 'label ', fga_py.fg3a_p36m) training.toPandas (). head ()

산출:

자바로 인터프리터 작성

건물 모델 :

그런 다음 변환 된 데이터를 사용하여 선형 회귀 모델 개체를 만듭니다.

pyspark.ml.regression에서 가져 오기 LinearRegression lr = LinearRegression (maxIter = 10) 모델 = lr.fit (training)

훈련 된 모델을 데이터 세트에 적용 :

훈련 된 모델 객체 모델을 5 년의 미래 데이터와 함께 원래 훈련 세트에 적용합니다.

from pyspark.sql.types import Row # 2020-21 시즌까지 1979-80 시즌 모델 적용 training_yrs = training.select ( 'yr'). rdd.map (lambda x : x [0]). collect () training_y = training.select ( 'fg3a_p36m'). rdd.map (lambda x : x [0]). collect () predict_yrs = [2017, 2018, 2019, 2020, 2021] all_yrs = training_yrs + predict_yrs # 빌드 된 테스트 DataFrame test_rdd = sc.parallelize (all_yrs) row = Row ( 'yr') & amplt all_years_features = t.transform (test_rdd.map (row) .toDF ()) # 선형 회귀 모델 적용 df_results = model.transform (all_years_features) .toPandas ()

최종 예측 플로팅 :

그런 다음 결과를 플로팅하고 지정된 위치에 그래프를 저장할 수 있습니다.

plt.plot (df_results.yr, df_results.prediction, linewidth = 2, linestyle = '-', color = '# 224df7', label = 'L2 Fit') plt.plot (training_yrs, training_y, color = '# f08080 ', label = None) plt.xlabel ('Year ') plt.ylabel ('시도 횟수 ') plt.legend (loc = 4) _ = plt.title ('플레이어 평균 3 점 시도 (36 분당) ') plt.tight_layout () plt.savefig ('/ home / edureka / Downloads / Images / REGRESSION.png ')

산출:

그리고이 그래프를 사용하여이 PySpark 튜토리얼 블로그의 끝입니다.

그래서 이것이야, 여러분!

여러분이 PySpark가 무엇인지, 왜 Python이 Spark, RDD에 가장 적합한 지,이 PySpark 튜토리얼 블로그에서 Pyspark를 사용한 기계 학습에 대해 알아 보셨기를 바랍니다. 축하합니다. 더 이상 PySpark의 초보자가 아닙니다. PySpark에 대해 자세히 알아보고 다양한 산업 사용 사례를 이해하려면 Python으로 Spark 블로그.

Pyspark가 무엇인지 이해 했으니 이제 전 세계에 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 에두 레카 PySpark를 사용한 Python Spark 인증 교육 Python을 사용하여 성공적인 Spark 개발자가되는 데 필요한 지식과 기술을 제공하고 Cloudera Hadoop 및 Spark 개발자 인증 시험 (CCA175)을 준비하도록 설계되었습니다.