Spark 스트리밍 자습서 – Apache Spark를 사용한 감정 분석



이 Spark Streaming 블로그는 Spark Streaming, 기능 및 구성 요소를 소개합니다. 여기에는 Twitter를 사용한 감성 분석 프로젝트가 포함됩니다.

Spark Streaming은 실시간 데이터 스트림의 확장 가능하고 처리량이 높은 내결함성 스트림 처리를 가능하게하는 핵심 Spark API의 확장입니다. Spark Streaming은 라이브 데이터를 스트리밍하는 데 사용할 수 있으며 실시간으로 처리 할 수 ​​있습니다. Spark Streaming의 계속 성장하는 사용자 기반은 Uber, Netflix, Pinterest와 같은 가족 이름으로 구성됩니다.

실시간 데이터 분석과 관련하여 Spark Streaming은 빠르고 실시간 처리를 위해 데이터를 수집 할 수있는 단일 플랫폼을 제공합니다. 당신의 기술을 똑같이 증명합니다.이 블로그를 통해 Spark Streaming의 새롭고 흥미로운 도메인을 소개하고 완전한 사용 사례를 살펴 보겠습니다. 트위터 감정 분석 Spark Streaming을 사용합니다.





다음은이 블로그에서 다룰 주제입니다.

  1. 스트리밍이란?
  2. 왜 Spark Streaming인가?
  3. Spark 스트리밍 개요
  4. Spark 스트리밍 기능
  5. Spark 스트리밍 기본 사항
    5.1 스트리밍 컨텍스트
    5.2 DStream
    5.3 캐싱 / 지속성
    5.4 누산기, 브로드 캐스트 변수 및 체크 포인트
  6. 사용 사례 – Twitter 감정 분석

스트리밍이란?

데이터 스트리밍은 데이터를 지속적이고 지속적인 스트림으로 처리 할 수 ​​있도록 데이터를 전송하는 기술입니다. 스트리밍 기술은 인터넷의 성장과 함께 점점 더 중요 해지고 있습니다.



스트리밍이란 무엇인가-Spark Streaming-Edureka그림: 스트리밍이란?

왜 Spark Streaming인가?

Spark Streaming을 사용하여 Twitter, Stock Market 및 Geographical Systems와 같은 다양한 소스의 실시간 데이터를 스트리밍하고 강력한 분석을 수행하여 비즈니스를 지원할 수 있습니다.

그림: 왜 Spark Streaming인가?



Spark 스트리밍 개요

스파크 스트리밍 실시간 스트리밍 데이터 처리에 사용됩니다. 핵심 Spark API에 대한 유용한 추가 기능입니다. Spark Streaming은 라이브 데이터 스트림의 높은 처리량과 내결함성 스트림 처리를 지원합니다.

그림: Spark Streaming의 스트림

기본 스트림 단위는 DStream입니다.이것은 기본적으로 실시간 데이터를 처리하는 일련의 RDD입니다.

Spark 스트리밍 기능

  1. 확장 : Spark Streaming은 수백 개의 노드로 쉽게 확장 할 수 있습니다.
  2. 속도: 그것은낮은 대기 시간을 제공합니다.
  3. 결함 허용: Spark는 e장애로부터 효율적으로 복구합니다.
  4. 완성: Spark는 일괄 처리 및 실시간 처리와 통합됩니다.
  5. 비즈니스 분석: Spark Streaming은 U입니다.비즈니스 분석에 사용할 수있는 고객의 행동을 추적합니다.

Spark 스트리밍 워크 플로

Spark Streaming 워크 플로에는 4 개의 상위 수준 단계가 있습니다. 첫 번째는 다양한 소스에서 데이터를 스트리밍하는 것입니다. 이러한 소스는 실시간 스트리밍을위한 Akka, Kafka, Flume, AWS 또는 Parquet과 같은 스트리밍 데이터 소스 일 수 있습니다. 두 번째 유형의 소스에는 정적 / 일괄 스트리밍을위한 HBase, MySQL, PostgreSQL, Elastic Search, Mongo DB 및 Cassandra가 포함됩니다. 이런 일이 발생하면 Spark를 사용하여 MLlib API를 통해 데이터에 대한 기계 학습을 수행 할 수 있습니다. 또한 Spark SQL은이 데이터에 대한 추가 작업을 수행하는 데 사용됩니다. 마지막으로 스트리밍 출력은 HBase, Cassandra, MemSQL, Kafka, Elastic Search, HDFS 및 로컬 파일 시스템과 같은 다양한 데이터 스토리지 시스템에 저장할 수 있습니다.

그림: 스파크 스트리밍 개요

Spark 스트리밍 기본 사항

  1. 스트리밍 컨텍스트
  2. DStream
  3. 캐싱
  4. 누산기, 브로드 캐스트 변수 및 체크 포인트

스트리밍 컨텍스트

스트리밍 컨텍스트 Spark에서 데이터 스트림을 소비합니다. 그것은 등록합니다 입력 DStream 생산하기 위해 리시버 목적. Spark 기능의 주요 진입 점입니다. Spark는 컨텍스트에서 액세스 할 수있는 Twitter, Akka Actor 및 ZeroMQ와 같은 소스의 여러 기본 구현을 제공합니다.

StreamingContext 개체는 SparkContext 개체에서 만들 수 있습니다. SparkContext는 Spark 클러스터에 대한 연결을 나타내며 해당 클러스터에서 RDD, 누산기 및 브로드 캐스트 변수를 만드는 데 사용할 수 있습니다.

import org.apache.spark._ import org.apache.spark.streaming._ var ssc = new StreamingContext (sc, Seconds (1))

DStream

이산화 된 스트림 (DStream)은 Spark Streaming에서 제공하는 기본 추상화입니다. 연속적인 데이터 스트림입니다. 입력 스트림을 변환하여 생성 된 데이터 소스 또는 처리 된 데이터 스트림에서 수신됩니다.

그림: 입력 DStream에서 단어 추출

내부적으로 DStream은 연속적인 일련의 RDD로 표현되며 각 RDD에는 특정 간격의 데이터가 포함됩니다.

입력 DStream : 입력 DStream 스트리밍 소스에서 수신 한 입력 데이터의 스트림을 나타내는 DStream입니다.

그림: 수신기는 각 배치에 RDD가 포함 된 입력 DStream으로 데이터를 보냅니다.

모든 입력 DStream은 소스에서 데이터를 수신하고 처리를 위해 Spark의 메모리에 저장하는 Receiver 객체와 연결됩니다.

DStream의 변환 :

자바 프로그램 컴파일 방법

DStream에 적용된 모든 작업은 기본 RDD에 대한 작업으로 변환됩니다. 변환을 통해 입력 DStream의 데이터를 RDD와 유사하게 수정할 수 있습니다. DStreams는 일반 Spark RDD에서 사용할 수있는 많은 변환을 지원합니다.

그림: DStream 변환

다음은 DStreams에서 인기있는 변환 중 일부입니다.

지도( func )지도( func )는 소스 DStream의 각 요소를 함수를 통해 전달하여 새 DStream을 반환합니다. func.
flatMap ( func )flatMap ( func )는 map ( func ) 그러나 각 입력 항목은 0 개 이상의 출력 항목에 매핑 될 수 있으며 함수를 통해 각 소스 요소를 전달하여 새 DStream을 반환합니다. func.
필터( func )필터( func )는 소스 DStream의 레코드 만 선택하여 새 DStream을 반환합니다. func true를 반환합니다.
줄이다( func )줄이다( func ) 함수를 사용하여 소스 DStream의 각 RDD에있는 요소를 집계하여 단일 요소 RDD의 새 DStream을 반환합니다. func .
groupBy ( func )groupBy ( func )는 기본적으로 키와 해당 그룹의 해당 항목 목록으로 구성된 새 RDD를 반환합니다.

출력 DStream :

출력 작업을 통해 DStream의 데이터를 데이터베이스 또는 파일 시스템과 같은 외부 시스템으로 푸시 할 수 있습니다. 출력 작업은 모든 DStream 변환의 실제 실행을 트리거합니다.

그림: DStream에 대한 출력 작업

캐싱

DStreams 개발자가 스트림의 데이터를 메모리에 캐시 / 유지할 수 있습니다. DStream의 데이터가 여러 번 계산되는 경우 유용합니다. 이것은 persist () DStream의 메서드.

그림: 2 개 노드로 캐싱

네트워크를 통해 데이터를 수신하는 입력 스트림 (예 : Kafka, Flume, 소켓 등)의 경우기본 지속성 수준은 내결함성을 위해 데이터를 두 노드로 복제하도록 설정됩니다.

누산기, 브로드 캐스트 변수 및 체크 포인트

어큐뮬레이터 : 어큐뮬레이터 연관 및 교환 연산을 통해서만 추가되는 변수입니다. 카운터 또는 합계를 구현하는 데 사용됩니다. UI에서 누산기를 추적하면 실행중인 단계의 진행 상황을 이해하는 데 유용 할 수 있습니다. Spark는 기본적으로 숫자 누산기를 지원합니다. 명명 된 또는 명명되지 않은 누산기를 만들 수 있습니다.

방송 변수 : 방송 변수 프로그래머가 작업과 함께 복사본을 제공하지 않고 각 시스템에 캐시 된 읽기 전용 변수를 유지할 수 있습니다. 효율적인 방식으로 모든 노드에 대규모 입력 데이터 세트의 사본을 제공하는 데 사용할 수 있습니다. Spark는 또한 통신 비용을 줄이기 위해 효율적인 방송 알고리즘을 사용하여 방송 변수를 배포하려고 시도합니다.

체크 포인트 : 체크 포인트 게임의 체크 포인트와 유사합니다. 연중 무휴 24 시간 실행되고 애플리케이션 로직과 관련없는 장애에 대해 탄력적으로 작동합니다.


그림:
체크 포인트의 특징

사용 사례 – Twitter 감정 분석

이제 Spark Streaming의 핵심 개념을 이해 했으므로 Spark Streaming을 사용하여 실제 문제를 해결하겠습니다.

문제 설명: 위기 관리, 서비스 조정 및 타겟 마케팅을 위해 실시간 정서를 채우는 Twitter 감성 분석 시스템을 설계합니다.

감정 분석의 응용 :

  • 영화의 성공 예측
  • 정치적 캠페인 성공 예측
  • 특정 회사에 투자할지 여부 결정
  • 타겟 광고
  • 제품 및 서비스 검토

Spark Streaming 구현 :

아래에서 의사 코드를 찾으십시오.

// 필요한 패키지를 Spark 프로그램으로 가져 오기 import org.apache.spark.streaming. {Seconds, StreamingContext} import org.apache.spark.SparkContext._ ... import java.io.File object twitterSentiment {def main (args : 배열 [문자열]) {if (args.length<4) { System.err.println('Usage: TwitterPopularTags ' + ' []') System.exit(1) } StreamingExamples.setStreamingLogLevels() //Passing our Twitter keys and tokens as arguments for authorization val Array(consumerKey, consumerSecret, accessToken, accessTokenSecret) = args.take(4) val filters = args.takeRight(args.length - 4) // Set the system properties so that Twitter4j library used by twitter stream // Use them to generate OAuth credentials System.setProperty('twitter4j.oauth.consumerKey', consumerKey) ... System.setProperty('twitter4j.oauth.accessTokenSecret', accessTokenSecret) val sparkConf = new SparkConf().setAppName('twitterSentiment').setMaster('local[2]') val ssc = new Streaming Context val stream = TwitterUtils.createStream(ssc, None, filters) //Input DStream transformation using flatMap val tags = stream.flatMap { status =>해시 태그에서 텍스트 가져 오기} // sortBy를 사용한 RDD 변환 후 함수를 매핑합니다. tags.countByValue () .foreachRDD {rdd => val now = 각 트윗의 현재 시간 가져 오기 rdd .sortBy (_._ 2) .map (x => (x, now)) // 출력을 ~ / twitter / 디렉토리에 저장 .saveAsTextFile (s '~ / twitter / $ now')} // 필터 및 맵 기능을 사용한 DStream 변환 val tweets = stream.filter {t => 발 태그 = t. 공백으로 분할 .filter (_. startsWith ( '#')). 소문자로 변환 tags.exists {x => true}} val data = tweets.map {status => val sentiment = SentimentAnalysisUtils.detectSentiment (status.getText) val tagss = status.getHashtagEntities.map (_. getText.toLowerCase) (status.getText, sentiment.toString, tagss.toString ())} data.print () // twitters와 같이 시작하는 파일 이름으로 ~ /에 출력 저장 data.saveAsTextFiles ( '~ / twitters', '20000') ssc. start () ssc.awaitTermination ()}}

결과 :

다음은 Twitter Sentiment Streaming 프로그램을 실행하는 동안 Eclipse IDE에 표시되는 결과입니다.

그림: Eclipse IDE의 감정 분석 출력

스크린 샷에서 볼 수 있듯이 모든 트윗은 트윗 내용의 감정에 따라 Positive, Neutral, Negative로 분류됩니다.

트윗의 감정 출력은 생성 된 시간에 따라 폴더와 파일에 저장됩니다. 이 출력은 필요에 따라 로컬 파일 시스템 또는 HDFS에 저장할 수 있습니다. 출력 디렉토리는 다음과 같습니다.

그림: 'twitter'프로젝트 폴더 내의 출력 폴더

여기에서 트위터 디렉토리 내에서 아래에 표시된 것처럼 모든 트윗의 타임 스탬프와 함께 트위터 사용자의 사용자 이름을 찾을 수 있습니다.

그림: 타임 스탬프가있는 Twitter 사용자 이름이 포함 된 출력 파일

이제 Twitter 사용자 이름과 타임 스탬프를 얻었으므로 기본 디렉터리에 저장된 감정과 트윗을 살펴 보겠습니다. 여기에서 모든 트윗 뒤에는 감성 감정이 이어집니다. 저장되는이 감정은 기업의 방대한 통찰력을 분석하는 데 더 많이 사용됩니다.

그림: 감정이있는 트윗이 포함 된 출력 파일

조정 코드 :

이제 특정 해시 태그 (주제)에 대한 감정을 얻기 위해 코드를 약간 수정 해 보겠습니다. 현재 미국 대통령 도널드 트럼프는 뉴스 채널과 온라인 소셜 미디어에서 유행하고 있습니다. 키워드‘ 지우다 ‘.

그림: '트럼프'키워드로 트윗에 대한 감정 분석 수행

앞으로 나아 가기 :

감성 분석 시연에서 알 수 있듯이 '트럼프'와 마찬가지로 특정 주제의 감성을 추출 할 수 있습니다. 마찬가지로 Sentiment Analytics는 전 세계 기업의 위기 관리, 서비스 조정 및 타겟 마케팅에 사용할 수 있습니다.

감성 분석을 위해 Spark Streaming을 사용하는 회사는 동일한 접근 방식을 적용하여 다음을 달성했습니다.

  1. 고객 경험 향상
  2. 경쟁 우위 확보
  3. 비즈니스 인텔리전스 확보
  4. 잃어버린 브랜드 활성화

이것으로 우리는 이것의 끝에 왔습니다 Spark 스트리밍 자습서 블로그. 지금 쯤이면 Spark Streaming이 무엇인지 제대로 이해하고 있어야합니다. Twitter 감정 분석 사용 사례는 Spark Streaming 및 Apache Spark에서 발생하는 향후 프로젝트에서 작업하는 데 필요한 자신감을 제공합니다. 연습은 모든 주제를 마스터하는 열쇠이며이 블로그가 Apache Spark에 대해 더 자세히 살펴볼 수있는 충분한 관심을 얻었기를 바랍니다.

시작하려면 Edureka의 다음 Spark Streaming YouTube 자습서를 권장합니다.

스파크 스트리밍 | 트위터 감성 분석 사례 | Edureka

Spark Tutorial에 대한이 비디오 시리즈는 다음과 같은 실제 사용 사례와 함께 구성 요소에 대한 완전한 배경 지식을 제공합니다. 트위터 감정 분석 , NBA 게임 예측 분석 , 지진 감지 시스템 , 비행 데이터 분석영화 추천 시스템 . 우리는 코드를 실행하는 모든 사람에게 포괄적 인 전문 지식을 제공하기 위해 사용 사례를 개인적으로 설계했습니다.

질문이 있으십니까? 댓글 섹션에 언급 해 주시면 빠른 시일 내에 답변 드리겠습니다. Spark를 배우고 Spark 도메인에서 경력을 쌓고 Real Life 사용 사례와 함께 RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​및 Scala를 사용하여 대규모 데이터 처리를 수행하기위한 전문 지식을 쌓으려면 대화 형 라이브를 확인하십시오. 온라인 여기, 연중 무휴 지원이 함께 제공되어 학습 기간 내내 안내합니다.