Python을 사용한 Spark 소개 – 초보자를위한 PySpark



Apache Spark는 빅 데이터 및 분석 세계를 장악했으며 Python은 오늘날 업계에서 가장 접근하기 쉬운 프로그래밍 언어 중 하나입니다. 그래서 여기이 블로그에서 우리는 두 세계를 최대한 활용하기 위해 Pyspark (python과 함께 스파크)에 대해 알아볼 것입니다.

빅 데이터를 처리하고 작업 할 때 가장 널리 사용되는 프레임 워크 중 하나이며 파이썬 데이터 분석, 머신 러닝 등에 가장 널리 사용되는 프로그래밍 언어 중 하나입니다. 그렇다면 함께 사용하지 않는 이유는 무엇입니까? 여기가 Python을 사용한 Spark 또한 ~으로 알려진 PySpark 들어오다그만큼그림.

Apache Spark 개발자의 평균 연봉이 $ 110,000이므로 Spark가 업계에서 많이 사용된다는 것은 의심의 여지가 없습니다. 때문에이것의풍부한 라이브러리 세트, Python은그만큼오늘날 대다수의 데이터 과학자 및 분석 전문가. Python을 Spark와 통합하는 것은 커뮤니티에 큰 선물이었습니다. Spark는 Java와 매우 유사한 Scala 언어로 개발되었습니다. 스파크 빅 데이터 처리를 위해 JVM 용 프로그램 코드를 바이트 코드로 컴파일합니다. Python으로 Spark를 지원하기 위해 Apache Spark 커뮤니티는 PySpark를 출시했습니다.이후로 계속, 이 두 세계의 장점을 결합한 후 얻은 광범위한 이점으로 인해 업계에서 가장 많이 찾는 기술 중 하나로 알려져 있습니다.이 Spark with Python 블로그에서는 다음 주제에 대해 설명합니다.

Apache Spark 소개

Apache Spark는 다음을위한 오픈 소스 클러스터 컴퓨팅 프레임 워크입니다. 실시간 처리 Apache Software Foundation에서 개발했습니다. Spark는 암시 적으로 전체 클러스터를 프로그래밍하기위한 인터페이스를 제공합니다. 데이터 병렬 처리결함 허용.

다음은 다른 프레임 워크보다 우위를 차지하는 Apache Spark의 일부 기능입니다.

Spark 기능-Python을 사용한 Spark-Edureka

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

왜 파이썬을 선택합니까?

Spark는 스칼라로 설계되었지만, 이는 Python보다 거의 10 배 더 빠르지 만 Scala는 사용중인 코어 수가 적음 . 오늘날 대부분의 분석 및 프로세스에는 많은 수의 코어가 필요하므로 Scala의 성능 이점은 그다지 크지 않습니다.

네임 스페이스 C ++ 사용

프로그래머에게 Python은 비교적 쉬움 배우다 구문과 표준 라이브러리 때문입니다. 또한 동적으로 유형화 된 언어, 이는 RDD가 여러 유형의 객체를 보유 할 수 있음을 의미합니다.

Scala에는 SparkMLlib 그것은 가지고 있지 않다 기계 학습 및 NLP를위한 충분한 라이브러리 및 도구 목적. 또한 Scala에는 데이터 시각화가 없습니다.

PySpark 교육 | Python과 Apache Spark | Edureka

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

Python으로 Spark 설정 (PySpark)

너희들이 방법을 알고 있기를 바랍니다 .그래서 일단 당신이 압축이 풀린 스파크 파일, 설치됨 그것의 경로를 추가했습니다 .bashrc 파일을 입력해야합니다.소스 .bashrc

export SPARK_HOME = /usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7 내보내기 경로 = $ PATH : /usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7/bin

pyspark 셸을 열려면 다음 명령을 입력해야합니다../bin/pyspark

업계의 스파크

Apache Spark는 다음과 같은 놀라운 기능으로 인해 인 메모리 처리 , 다국어빠른 처리 전 세계의 많은 회사에서 다양한 산업 분야의 다양한 목적으로 사용하고 있습니다.

야후 기계 학습 기능에 Apache Spark를 사용하여 뉴스, 웹 페이지 및 대상 광고를 개인화합니다. 그들은 Python과 함께 Spark를 사용하여 어떤 종류의 뉴스를 확인합니다. 사용자는 뉴스 기사를 읽고 분류하여 각 뉴스 범주를 읽는 데 관심이있는 사용자 유형을 파악합니다.

트립 어드바이저 아파치 스파크를 사용하여 수백 개의 웹 사이트를 비교하여 고객에게 가장 적합한 호텔 가격을 찾아 수백만 명의 여행자에게 조언을 제공합니다. 읽을 수있는 형식으로 호텔 리뷰를 읽고 처리하는 데 걸리는 시간은 Apache Spark의 도움으로 이루어집니다.

세계 최대의 전자 상거래 플랫폼 중 하나 알리바바 전자 상거래 플랫폼에서 수백 페타 바이트의 데이터를 분석하기 위해 세계에서 가장 큰 Apache Spark 작업을 실행합니다.

PySpark SparkContext 및 데이터 흐름

Python으로 Spark에 대해 이야기하면서 RDD로 작업하는 것은 라이브러리 Py4j에 의해 가능해졌습니다. PySpark Shell은 Python API를 Spark 코어에 연결하고 Spark 컨텍스트를 초기화합니다. Spark 컨텍스트 모든 스파크 애플리케이션의 핵심입니다.

  1. Spark 컨텍스트는 내부 서비스를 설정하고 Spark 실행 환경에 대한 연결을 설정합니다.
  2. 드라이버 프로그램의 sparkcontext 개체는 모든 분산 프로세스를 조정하고 리소스 할당을 허용합니다.
  3. Cluster Manager는 로직이있는 JVM 프로세스 인 Executor를 제공합니다.
  4. SparkContext 객체는 애플리케이션을 실행자에게 보냅니다.
  5. SparkContext는 각 실행기에서 작업을 실행합니다.

PySpark KDD 사용 사례

이제 사용 사례를 살펴 보겠습니다. KDD’99 컵 (국제 지식 발견 및 데이터 마이닝 도구 공모전).여기서는 원래 데이터 세트가 너무 크기 때문에 데이터 세트의 일부를 취하겠습니다.

import urllib f = urllib.urlretrieve ( 'http://kdd.ics.uci.edu/databases/kddcup99/kddcup.data_10_percent.gz', 'kddcup.data_10_percent.gz')

RDD 생성 :
이제이 파일을 사용하여 RDD 생성 .

data_file = './kddcup.data_10_percent.gz'raw_data = sc.textFile (data_file)

필터링 :

정상 수를 세고 싶다고 가정합니다. 데이터 세트에있는 상호 작용. 우리는 할 수 있습니다 필터 raw_data RDD는 다음과 같습니다.

normal_raw_data = raw_data.filter (lambda x : 'normal.'in x)

카운트:

이제 우리는 카운트 새로운 RDD에 얼마나 많은 요소가 있는지.

시간부터 가져 오기 시간 t0 = time () normal_count = normal_raw_data.count () tt = time ()-t0 print ''정상적인 '상호 작용이 {} 개 있습니다'.format (normal_count) print '{} 초 안에 완료된 카운트'.format (라운드 (tt, 3))

산출:

5.951 초 안에 완료된 97278 개의 '정상'상호 작용이 있습니다.

매핑 :

이것에케이스데이터 파일을 CSV 형식의 파일로 읽고 싶습니다. 다음과 같이 RDD의 각 요소에 람다 함수를 적용하여이를 수행 할 수 있습니다. 여기서 우리는 map () 및 take () 변환.

from pprint import pprint csv_data = raw_data.map (lambda x : x.split ( ',')) t0 = time () head_rows = csv_data.take (5) tt = time ()-t0 print '{} 초 안에 구문 분석 완료 '.format (round (tt, 3)) pprint (head_rows [0])

산출:

1.715 초 안에 구문 분석 완료 [u'0 ', u'tcp', u'http ', u'SF', u'181 ', u'5450', u'0 ', u'0',. . u'normal. ']

파편:

이제 RDD의 각 요소를 키가 태그 인 키-값 쌍으로 갖기를 원합니다 (예 : 표준 ) 값은 CSV 형식 파일의 행을 나타내는 전체 요소 목록입니다. 다음과 같이 진행할 수 있습니다. 여기서 우리는 line.split () 및 map ().

def parse_interaction (line) : elems = line.split ( ',') tag = elems [41] return (tag, elems) key_csv_data = raw_data.map (parse_interaction) head_rows = key_csv_data.take (5) pprint (head_rows [0] )
 산출: (u'normal. ', [u'0', u'tcp ', u'http', u'SF ', u'181', u'5450 ', u'0', u'0 ', u' 0.00 ', u'1.00', .... U '보통.'])

수집 조치 :

여기서는 collect () 액션을 사용할 것입니다. RDD의 모든 요소를 ​​메모리로 가져옵니다. 이러한 이유로 큰 RDD로 작업 할 때는주의해서 사용해야합니다.

t0 = time () all_raw_data = raw_data.collect () tt = time ()-t0 print '데이터 수집은 {} 초'.format (round (tt, 3))

산출:

17.927 초에 수집 된 데이터

물론 이전에 사용한 다른 작업보다 더 오래 걸렸습니다. RDD 조각이있는 모든 Spark 작업자 노드는 해당 부분을 검색 한 다음 모든 것을 함께 줄이기 위해 조정되어야합니다.

이전의 모든 것을 결합한 마지막 예로서, 우리는 모든표준키-값 쌍으로 상호 작용.

# 파일에서 데이터 가져 오기 data_file = './kddcup.data_10_percent.gz'raw_data = sc.textFile (data_file) # 키-값 쌍으로 구문 분석 key_csv_data = raw_data.map (parse_interaction) # 일반 키 상호 작용 필터링 normal_key_interactions = key_csv_data.filter ( lambda x : x [0] == 'normal.') # 모두 수집 t0 = time () all_normal = normal_key_interactions.collect () tt = time ()-t0 normal_count = len (all_normal) print '{} 초 내에 수집 된 데이터 '.format (round (tt, 3)) print' '정상적인'상호 작용이 {} 개 있습니다 '.format (normal_count)

산출:

12.485 초 내에 수집 된 데이터 97278 개의 정상적인 상호 작용이 있습니다.

그래서 이거 다!

이 Spark with Python 블로그를 즐기 셨기를 바랍니다. 이 글을 읽고 계시다면 축하합니다! 더 이상 PySpark의 초보자가 아닙니다. 지금 시스템에서이 간단한 예제를 사용해보십시오..

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

질문이 있으십니까? 의견란에 언급 해 주시면 연락 드리겠습니다.