Инструкция за стрийминг на Spark - Анализ на настроението с помощта на Apache Spark



Този блог на Spark Streaming ще ви запознае със Spark Streaming, неговите функции и компоненти. Той включва проект за анализ на настроението, използващ Twitter.

Spark Streaming е разширение на основния Spark API, който позволява мащабируема, високопроизводителна, устойчива на грешки обработка на потоци на потоци от данни на живо. Spark Streaming може да се използва за поточно предаване на данни и обработката може да се случи в реално време. Непрекъснато нарастващата потребителска база на Spark Streaming се състои от домакински имена като Uber, Netflix и Pinterest.

Когато става въпрос за Анализ на данни в реално време, Spark Streaming предоставя единна платформа за поглъщане на данни за бърза и жива обработка и доказва вашето умение в същото.Чрез този блог ще ви запозная с този нов вълнуващ домейн на Spark Streaming и ще преминем през пълен случай на употреба, Анализ на настроенията в Twitter използване на Spark Streaming.





По-долу са темите, които ще бъдат разгледани в този блог:

  1. Какво е стрийминг?
  2. Защо Spark Streaming?
  3. Общ преглед на Spark Streaming
  4. Функции на Spark Streaming
  5. Основи на Spark Streaming
    5.1 Контекст на поточно предаване
    5.2 DStream
    5.3 Кеширане / постоянство
    5.4 Акумулатори, излъчвани променливи и контролни точки
  6. Случай на употреба - Анализ на настроенията в Twitter

Какво е стрийминг?

Потоковото предаване на данни е техника за прехвърляне на данни, така че те да могат да бъдат обработвани като постоянен и непрекъснат поток. Стрийминг технологиите стават все по-важни с нарастването на Интернет.



Какво е стрийминг - Spark Streaming - EdurekaФигура: Какво е стрийминг?

Защо Spark Streaming?

Можем да използваме Spark Streaming за поточно предаване на данни в реално време от различни източници като Twitter, фондова борса и географски системи и да извършваме мощни анализи в помощ на бизнеса.

Фигура: Защо Spark Streaming?



Общ преглед на Spark Streaming

Искрено поточно предаване се използва за обработка на поточни данни в реално време. Това е полезно допълнение към основния API на Spark. Spark Streaming позволява високопроизводителна и устойчива на грешки обработка на потоци на потоци от данни на живо.

Фигура: Потоци в Spark Streaming

Основната поточна единица е DStreamкоето по същество представлява поредица от RDD за обработка на данните в реално време.

Функции на Spark Streaming

  1. Мащабиране: Spark Streaming може лесно да се мащабира до стотици възли.
  2. Скорост: Това аниска латентност.
  3. Толерантност към повреди: Spark има способността да eлеко се възстанови от неуспехи.
  4. Интеграция: Spark се интегрира с пакетна обработка и обработка в реално време.
  5. Бизнес анализ: Spark Streaming е used за проследяване на поведението на клиентите, което може да се използва при бизнес анализ.

Spark Streaming Workflow

Работният процес на Spark Streaming има четири етапа на високо ниво. Първият е да предавате данни от различни източници. Тези източници могат да бъдат поточни източници на данни като 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 Streaming

Основи на Spark Streaming

  1. Контекст на поточно предаване
  2. DStream
  3. Кеширане
  4. Акумулатори, излъчвани променливи и контролни точки

Контекст на поточно предаване

Контекст на поточно предаване консумира поток от данни в Spark. Той регистрира Въведете DStream да произвежда a Приемник обект. Това е основната входна точка за функционалността на Spark. Spark предоставя редица реализации по подразбиране на източници като Twitter, Akka Actor и ZeroMQ, които са достъпни от контекста.

Обект StreamingContext може да бъде създаден от обект SparkContext. SparkContext представлява връзката към Spark клъстер и може да се използва за създаване на RDD, акумулатори и променливи на този клъстер.

как да изляза от метод в java -
import org.apache.spark._ import org.apache.spark.streaming._ var ssc = нов StreamingContext (sc, секунди (1))

DStream

Дискретизиран поток (DStream) е основната абстракция, предоставена от Spark Streaming. Това е непрекъснат поток от данни. Получава се от източник на данни или от обработен поток от данни, генериран чрез трансформиране на входния поток.

Фигура: Извличане на думи от Input DStream

Вътрешно DStream е представен от непрекъсната серия от RDD и всеки RDD съдържа данни от определен интервал.

Входни DS потоци: Входни DStreams са DStreams, представляващи потока от входни данни, получени от поточни източници.

Фигура: Приемникът изпраща данни към Input DStream, където всяка партида съдържа RDD

Всеки вход DStream е свързан с приемник, който получава данните от източник и ги съхранява в паметта на Spark за обработка.

Трансформации на DStreams:

Всяка операция, приложена върху 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 .
Групирай по( func )Групирай по( func ) връща новия RDD, който основно се състои от ключ и съответния списък с елементи от тази група.

Изходни DS потоци:

Изходните операции позволяват данните на DStream да бъдат изтласквани към външни системи като бази данни или файлови системи. Изходните операции задействат действителното изпълнение на всички DStream трансформации.

Фигура: Изходни операции на DStreams

Кеширане

DS потоци позволяват на разработчиците да кешират / запазват данните на потока в паметта. Това е полезно, ако данните в DStream ще бъдат изчислени няколко пъти. Това може да се направи с помощта на упорствам() метод на DStream.

Фигура: Кеширане в 2 възли

са git и github еднакви

За входни потоци, които получават данни по мрежата (като Kafka, Flume, Sockets и др.),нивото на устойчивост по подразбиране е настроено да репликира данните до два възела за устойчивост на грешки.

Акумулатори, излъчвани променливи и контролни точки

Акумулатори: Акумулатори са променливи, които се добавят само чрез асоциативна и комутативна операция. Те се използват за реализиране на броячи или суми. Проследяващите акумулатори в потребителския интерфейс могат да бъдат полезни за разбиране на напредъка на работещите етапи. Spark естествено поддържа цифрови акумулатори. Можем да създадем имена или неназовани акумулатори.

Излъчвани променливи: Излъчвани променливи позволяват на програмиста да запази кеширана променлива само за четене на всяка машина, вместо да изпраща копие от нея със задачи. Те могат да се използват, за да дадат на всеки възел по ефективно копие на голям набор от входни данни. Spark също се опитва да разпространява излъчвани променливи, използвайки ефективни алгоритми за излъчване, за да намали разходите за комуникация.

КПП: Контролни точки са подобни на контролните точки в игрите. Те го правят да работи 24/7 и го правят устойчив на повреди, несвързани с логиката на приложението.


Фигура:
Характеристики на контролно-пропускателните пунктове

Случай на употреба - Анализ на настроенията в 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 : Array [String]) {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 =>Вземете текст от Hashtags} // RDD трансформация с помощта на sortBy и след това картографирайте функционални тагове.countByValue () .foreachRDD {rdd => val now = Вземете текущото време на всеки Tweet rdd .sortBy (_._ 2) .map (x => (x, сега)) // Запазване на нашия изход в ~ / twitter / directory .saveAsTextFile (s '~ / twitter / $ now')} // Трансформация на DStream с помощта на филтър и функции на картата val tweets = stream.filter {t => тагове val = t. Разделяне на пространства .filter (_. StartWith ('#')). Преобразуване в малки букви tag.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 ()}}

Резултати:

Следват резултатите, които се показват в IDE на Eclipse, докато се изпълнява програмата за поточно предаване на Twitter Sentiment.

Фигура: Изход за анализ на настроението в Eclipse IDE

Както виждаме на екранната снимка, всички туитове са категоризирани в Положителни, Неутрални и Отрицателни според настроението на съдържанието на туитовете.

Резултатът от Sentiment of Tweets се съхранява в папки и файлове според времето, в което са създадени. Този изход може да се съхранява в локалната файлова система или HDFS, ако е необходимо. Изходната директория изглежда така:

Фигура: Изведете папки в нашата папка на проекта „twitter“

Тук, в директорията на Twitter, можем да намерим потребителските имена на потребителите на Twitter заедно с клеймото за всеки туит, както е показано по-долу:

Фигура: Изходен файл, съдържащ потребителски имена в Twitter с клеймо за време

След като получихме потребителските имена и клеймото на Twitter, нека разгледаме настроенията и туитовете, съхранени в основната директория. Тук всеки туит е последван от емоция на настроението. Това съхранение, което се съхранява, се използва по-нататък за анализиране на огромно множество прозрения от компаниите.

Фигура: Изходен файл, съдържащ туитове със сантименти

Код за променяне:

задайте прозорци на Java classpath 10

Сега, нека модифицираме нашия код малко, за да получим настроения за конкретни хаштагове (теми). В момента Доналд Тръмп, президентът на Съединените щати, е в тенденция в новинарските канали и онлайн социалните медии. Нека разгледаме настроенията, свързани с ключовата дума ‘ Тръмп ‘.

Фигура: Извършване на анализ на настроението върху туитове с ключова дума „Тръмп“

Движение напред:

Както видяхме от нашата демонстрация на Sentiment Analysis, можем да извлечем настроения по определени теми точно както направихме за „Тръмп“. Аналогично, Sentiment Analytics може да се използва при управление на кризи, коригиране на услуги и целеви маркетинг от компании по целия свят.

Компаниите, използващи Spark Streaming за анализ на настроението, са приложили същия подход, за да постигнат следното:

  1. Подобряване на клиентското изживяване
  2. Получаване на конкурентно предимство
  3. Получаване на бизнес интелигентност
  4. Съживяване на губеща марка

С това стигнахме до края на това Урок на Spark Streaming блог. Досега трябва да сте разбрали добре какво е Spark Streaming. Случаят на използване на Twitter Sentiment Analysis ще ви даде необходимата увереност за работа по всички бъдещи проекти, които срещате в Spark Streaming и Apache Spark. Практиката е ключът към овладяването на който и да е предмет и се надявам този блог да е създал достатъчно интерес към вас, за да изследвате по-нататък на Apache Spark.

Препоръчваме да започнете следния урок за поточно предаване на YouTube от Edureka:

Искрено поточно предаване | Пример за анализ на настроенията в Twitter | Едурека

Тази видео поредица на Spark Tutorial предоставя пълна информация за компонентите заедно със случаите на използване в реалния живот, като например Анализ на настроенията в Twitter , Анализ на прогнозата на играта в НБА , Система за откриване на земетресения , Анализ на полетните данни и Системи за препоръчване на филми . Ние лично сме проектирали случаите на употреба, така че да предоставим цялостен опит на всеки, който изпълнява кода.

Имате въпрос към нас? Моля, споменете го в раздела за коментари и ние ще се свържем с вас най-рано. Ако искате да научите Spark и да изградите кариера в областта на Spark и да изградите опит за извършване на мащабна обработка на данни с помощта на RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​и Scala с реални случаи на използване, разгледайте нашите интерактивни, на живо на линия тук, който идва с поддръжка 24 * 7, за да ви води през целия период на обучение.