Spark Streaming Tutorial - Phân tích cảm xúc bằng Apache Spark



Blog Spark Streaming này sẽ giới thiệu cho bạn về Spark Streaming, các tính năng và thành phần của nó. Nó bao gồm một dự án Phân tích cảm xúc bằng Twitter.

Spark Streaming là một phần mở rộng của API Spark cốt lõi cho phép xử lý luồng dữ liệu trực tiếp có thể mở rộng, thông lượng cao, chịu được lỗi. Spark Streaming có thể được sử dụng để phát trực tiếp dữ liệu và quá trình xử lý có thể diễn ra trong thời gian thực. Cơ sở người dùng ngày càng tăng của Spark Streaming bao gồm những cái tên quen thuộc như Uber, Netflix và Pinterest.

Khi nói đến Phân tích dữ liệu thời gian thực, Spark Streaming cung cấp một nền tảng duy nhất để nhập dữ liệu nhằm xử lý trực tiếp và nhanh chóng và chứng minh kỹ năng của bạn trong cùng một.Thông qua blog này, tôi sẽ giới thiệu cho bạn miền thú vị mới này của Spark Streaming và chúng ta sẽ xem xét một trường hợp sử dụng hoàn chỉnh, Phân tích tình cảm trên Twitter bằng cách sử dụng Spark Streaming.





Sau đây là các chủ đề sẽ được đề cập trong blog này:

  1. Truyền trực tuyến là gì?
  2. Tại sao Spark Streaming?
  3. Tổng quan về Spark Streaming
  4. Tính năng Spark Streaming
  5. Các nguyên tắc cơ bản về phát trực tuyến Spark
    5.1 Bối cảnh phát trực tuyến
    5.2 DStream
    5.3 Bộ nhớ đệm / Độ bền
    5,4 Bộ tích lũy, Biến phát sóng và Điểm kiểm tra
  6. Trường hợp sử dụng - Phân tích tình cảm trên Twitter

Truyền trực tuyến là gì?

Truyền dữ liệu là một kỹ thuật truyền dữ liệu để nó có thể được xử lý như một luồng ổn định và liên tục. Công nghệ phát trực tuyến ngày càng trở nên quan trọng với sự phát triển của Internet.



Phát trực tuyến là gì - Spark Streaming - EdurekaNhân vật: Truyền trực tuyến là gì?

Tại sao Spark Streaming?

Chúng tôi có thể sử dụng Spark Streaming để truyền dữ liệu thời gian thực từ nhiều nguồn khác nhau như Twitter, Thị trường chứng khoán và Hệ thống địa lý và thực hiện các phân tích mạnh mẽ để trợ giúp các doanh nghiệp.

Nhân vật: Tại sao Spark Streaming?



Tổng quan về Spark Streaming

Spark Streaming được sử dụng để xử lý dữ liệu phát trực tuyến thời gian thực. Nó là một bổ sung hữu ích cho API Spark cốt lõi. Spark Streaming cho phép xử lý luồng dữ liệu trực tiếp có thông lượng cao và chịu được lỗi.

Nhân vật: Luồng trong Spark Streaming

Đơn vị luồng cơ bản là DStreamvề cơ bản là một loạt các RDD để xử lý dữ liệu thời gian thực.

Tính năng Spark Streaming

  1. Chia tỷ lệ: Spark Streaming có thể dễ dàng mở rộng quy mô đến hàng trăm nút.
  2. Tốc độ: Nó là mộttrộm cắp độ trễ thấp.
  3. Khả năng chịu lỗi: Spark có khả năng đphục hồi thành thạo sau những thất bại.
  4. Hội nhập: Spark tích hợp với xử lý hàng loạt và thời gian thực.
  5. Phân tích kinh doanh: Spark Streaming là bạnsed để theo dõi hành vi của khách hàng có thể được sử dụng trong phân tích kinh doanh.

Luồng công việc phát trực tuyến Spark

Luồng công việc Spark Streaming có bốn giai đoạn cấp cao. Đầu tiên là truyền dữ liệu từ nhiều nguồn khác nhau. Các nguồn này có thể là các nguồn dữ liệu phát trực tuyến như Akka, Kafka, Flume, AWS hoặc Parquet để phát trực tuyến theo thời gian thực. Loại nguồn thứ hai bao gồm HBase, MySQL, PostgreSQL, Elastic Search, Mongo DB và Cassandra để phát trực tuyến tĩnh / hàng loạt. Khi điều này xảy ra, Spark có thể được sử dụng để thực hiện Học máy trên dữ liệu thông qua API MLlib của nó. Hơn nữa, Spark SQL được sử dụng để thực hiện các hoạt động tiếp theo trên dữ liệu này. Cuối cùng, đầu ra phát trực tuyến có thể được lưu trữ vào các hệ thống lưu trữ dữ liệu khác nhau như HBase, Cassandra, MemSQL, Kafka, Elastic Search, HDFS và hệ thống tệp cục bộ.

Nhân vật: Tổng quan về Spark Streaming

Các nguyên tắc cơ bản về phát trực tuyến Spark

  1. Bối cảnh phát trực tuyến
  2. DStream
  3. Bộ nhớ đệm
  4. Bộ tích lũy, Biến phát sóng và Điểm kiểm tra

Bối cảnh phát trực tuyến

Bối cảnh phát trực tuyến sử dụng một luồng dữ liệu trong Spark. Nó đăng ký một Nhập DStream để sản xuất một Người nhận vật. Nó là điểm nhập chính cho chức năng Spark. Spark cung cấp một số triển khai mặc định của các nguồn như Twitter, Akka Actor và ZeroMQ có thể truy cập từ ngữ cảnh.

Một đối tượng StreamingContext có thể được tạo từ một đối tượng SparkContext. Một SparkContext đại diện cho kết nối với một cụm Spark và có thể được sử dụng để tạo RDD, bộ tích lũy và các biến quảng bá trên cụm đó.

hướng dẫn Spring mvc cho người mới bắt đầu
import org.apache.spark._ import org.apache.spark.streaming._ var ssc = new StreamingContext (sc, Seconds (1))

DStream

Luồng riêng tư (DStream) là phần trừu tượng cơ bản được cung cấp bởi Spark Streaming. Nó là một dòng dữ liệu liên tục. Nó được nhận từ một nguồn dữ liệu hoặc một luồng dữ liệu đã xử lý được tạo ra bằng cách chuyển đổi luồng đầu vào.

Nhân vật: Trích xuất từ ​​từ Dòng nhập liệu

Bên trong, một DStream được biểu diễn bằng một chuỗi RDD liên tục và mỗi RDD chứa dữ liệu từ một khoảng thời gian nhất định.

Nhập DStreams: Nhập DStreams là các DStream đại diện cho luồng dữ liệu đầu vào nhận được từ các nguồn phát trực tuyến.

Nhân vật: Bộ nhận gửi dữ liệu vào Dòng đầu vào trong đó mỗi Batch chứa RDD

Mọi DStream đầu vào được liên kết với một đối tượng Receiver nhận dữ liệu từ một nguồn và lưu trữ nó trong bộ nhớ của Spark để xử lý.

Biến đổi trên DStreams:

Bất kỳ hoạt động nào được áp dụng trên DStream đều chuyển thành các hoạt động trên RDD bên dưới. Các phép biến đổi cho phép dữ liệu từ DStream đầu vào được sửa đổi tương tự như RDD. DStream hỗ trợ nhiều biến đổi có sẵn trên Spark RDD thông thường.

Nhân vật: Chuyển đổi DStream

Sau đây là một số biến đổi phổ biến trên DStreams:

bản đồ( func )bản đồ( func ) trả về một DStream mới bằng cách chuyển từng phần tử của DStream nguồn thông qua một hàm func.
Bản đồ phẳng( func )Bản đồ phẳng( func ) tương tự như bản đồ ( func ) nhưng mỗi mục đầu vào có thể được ánh xạ tới 0 hoặc nhiều mục đầu ra và trả về một DStream mới bằng cách chuyển từng phần tử nguồn thông qua một hàm func.
bộ lọc ( func )bộ lọc ( func ) trả về một DStream mới bằng cách chỉ chọn các bản ghi của DStream nguồn mà trên đó func trả về true.
giảm( func )giảm( func ) trả về một DStream mới của các RDD đơn phần tử bằng cách tổng hợp các phần tử trong mỗi RDD của DStream nguồn bằng cách sử dụng một hàm func .
groupBy ( func )groupBy ( func ) trả về RDD mới về cơ bản được tạo thành với một khóa và danh sách các mục tương ứng của nhóm đó.

Đầu ra DStreams:

Các hoạt động đầu ra cho phép dữ liệu của DStream được đẩy ra các hệ thống bên ngoài như cơ sở dữ liệu hoặc hệ thống tệp. Các hoạt động đầu ra kích hoạt thực thi thực tế của tất cả các phép biến đổi DStream.

Nhân vật: Hoạt động đầu ra trên DStreams

Bộ nhớ đệm

DStreams cho phép nhà phát triển lưu trữ / lưu giữ dữ liệu của luồng trong bộ nhớ. Điều này rất hữu ích nếu dữ liệu trong DStream sẽ được tính toán nhiều lần. Điều này có thể được thực hiện bằng cách sử dụng kiên trì () trên DStream.

Nhân vật: Bộ nhớ đệm vào 2 nút

java cách thoát khỏi chương trình

Đối với các luồng đầu vào nhận dữ liệu qua mạng (chẳng hạn như Kafka, Flume, Sockets, v.v.),mức độ bền bỉ mặc định được đặt để sao chép dữ liệu đến hai nút để chịu lỗi.

Bộ tích lũy, Biến phát sóng và Điểm kiểm tra

Bộ tích lũy: Bộ tích lũy là các biến chỉ được thêm vào thông qua một phép toán kết hợp và giao hoán. Chúng được sử dụng để triển khai bộ đếm hoặc tổng. Theo dõi bộ tích lũy trong giao diện người dùng có thể hữu ích để hiểu tiến trình của các giai đoạn đang chạy. Spark tự nhiên hỗ trợ tích lũy số. Chúng ta có thể tạo bộ tích lũy có tên hoặc không tên.

Các biến truyền phát: Các biến quảng bá cho phép lập trình viên giữ một biến chỉ đọc được lưu vào bộ nhớ cache trên mỗi máy thay vì gửi một bản sao của nó cùng với các tác vụ. Chúng có thể được sử dụng để cung cấp cho mọi nút một bản sao của tập dữ liệu đầu vào lớn một cách hiệu quả. Spark cũng cố gắng phân phối các biến quảng bá bằng cách sử dụng các thuật toán quảng bá hiệu quả để giảm chi phí truyền thông.

Các điểm kiểm tra: Trạm kiểm soát tương tự như các trạm kiểm soát trong trò chơi. Họ làm cho nó chạy 24/7 và làm cho nó có khả năng phục hồi trước những lỗi không liên quan đến logic ứng dụng.


Nhân vật:
Tính năng của các trạm kiểm soát

Trường hợp sử dụng - Phân tích tình cảm trên Twitter

Bây giờ chúng ta đã hiểu các khái niệm cốt lõi của Spark Streaming, chúng ta hãy giải quyết một vấn đề trong đời thực bằng cách sử dụng Spark Streaming.

Báo cáo vấn đề: Để thiết kế Hệ thống phân tích cảm xúc trên Twitter, nơi chúng tôi đưa ra các ý kiến ​​theo thời gian thực để quản lý khủng hoảng, điều chỉnh dịch vụ và tiếp thị mục tiêu.

Các ứng dụng của phân tích cảm xúc:

  • Dự đoán thành công của một bộ phim
  • Dự đoán thành công của chiến dịch chính trị
  • Quyết định xem có nên đầu tư vào một công ty nhất định hay không
  • Quảng cáo được nhắm mục tiêu
  • Đánh giá sản phẩm và dịch vụ

Triển khai Spark Streaming:

Tìm Mã giả bên dưới:

// Nhập các gói cần thiết vào Chương trình 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 =>Lấy văn bản từ thẻ băm} // chuyển đổi RDD bằng cách sử dụng sortBy và sau đó ánh xạ các thẻ chức năng.countByValue () .foreachRDD {rdd => val now = Lấy thời gian hiện tại của mỗi Tweet rdd .sortBy (_._ 2) .map (x => (x, now)) // Lưu kết quả đầu ra của chúng tôi tại ~ / twitter / directory .saveAsTextFile (s '~ / twitter / $ now')} // Chuyển đổi DStream sử dụng hàm lọc và ánh xạ val tweets = stream.filter {t => thẻ val = t. Split On Spaces .filter (_. StartedWith ('#')). Chuyển đổi thành chữ thường tags.exists {x => true}} val data = tweets.map {status => valentine = SentimentAnalysisUtils.detectSentiment (status.getText) val tagss = status.getHashtagEntities.map (_. GetText.toLowerCase) (status.getText ,hesia.toString, tagss.toString ())} data.print () // Lưu kết quả của chúng tôi tại ~ / với các tên tệp bắt đầu như twitters data.saveAsTextFiles ('~ / twitters', '20000') ssc. start () ssc.awaitTermina ()}}

Các kết quả:

Sau đây là các kết quả được hiển thị trong IDE Eclipse trong khi chạy chương trình Dòng cảm xúc Twitter.

Nhân vật: Đầu ra phân tích cảm xúc trong IDE Eclipse

Như chúng ta có thể thấy trong ảnh chụp màn hình, tất cả các tweet được phân loại thành Tích cực, Trung lập và Tiêu cực theo cảm xúc của nội dung của các tweet.

Đầu ra của Ý kiến ​​của Tweet được lưu trữ vào các thư mục và tệp theo thời gian chúng được tạo. Đầu ra này có thể được lưu trữ trên hệ thống tệp cục bộ hoặc HDFS nếu cần. Thư mục đầu ra trông giống như sau:

Nhân vật: Xuất các thư mục bên trong thư mục dự án ‘twitter’ của chúng tôi

Tại đây, bên trong thư mục twitter, chúng ta có thể tìm thấy tên người dùng của người dùng Twitter cùng với dấu thời gian cho mỗi tweet như hình dưới đây:

Nhân vật: Tệp đầu ra chứa tên người dùng Twitter có dấu thời gian

Bây giờ chúng ta đã có tên người dùng Twitter và dấu thời gian, chúng ta hãy xem xét Ý kiến ​​và tweet được lưu trữ trong thư mục chính. Ở đây, mỗi tweet được theo sau bởi cảm xúc tình cảm. Cảm xúc được lưu trữ này còn được sử dụng để phân tích vô số thông tin chi tiết của các công ty.

Nhân vật: Tệp đầu ra chứa các tweet với tình cảm

Mã tinh chỉnh:

Bây giờ, chúng ta hãy sửa đổi mã của mình một chút để có được tình cảm cho các thẻ bắt đầu bằng # (chủ đề) cụ thể. Hiện tại, Donald Trump, Tổng thống Hoa Kỳ đang thịnh hành trên các kênh tin tức và mạng xã hội trực tuyến. Hãy để chúng tôi xem xét các tình cảm liên quan đến từ khóa ‘ kèn ‘.

Nhân vật: Thực hiện Phân tích Cảm xúc trên Tweet với Từ khóa ‘Trump’

Di chuyển về phía trước:

Như chúng ta đã thấy từ phần trình diễn Phân tích cảm xúc của mình, chúng ta có thể trích xuất tình cảm của các chủ đề cụ thể giống như chúng ta đã làm cho ‘Trump’. Tương tự, Sentiment Analytics có thể được sử dụng trong quản lý khủng hoảng, điều chỉnh dịch vụ và tiếp thị mục tiêu của các công ty trên khắp thế giới.

Các công ty sử dụng Spark Streaming để phân tích tình cảm đã áp dụng cùng một cách tiếp cận để đạt được những điều sau:

  1. Nâng cao trải nghiệm khách hàng
  2. Đạt được lợi thế cạnh tranh
  3. Đạt được thông tin kinh doanh
  4. Hồi sinh một thương hiệu đã mất

Với điều này, chúng tôi đã đi đến kết thúc của điều này Hướng dẫn phát trực tuyến Spark Blog. Đến đây, chắc hẳn bạn đã hiểu rõ về Spark Streaming là gì. Trường hợp sử dụng Twitter Sentiment Analysis sẽ cung cấp cho bạn sự tự tin cần thiết để làm việc trên bất kỳ dự án nào trong tương lai mà bạn gặp phải trong Spark Streaming và Apache Spark. Thực hành là chìa khóa để thành thạo bất kỳ môn học nào và tôi hy vọng blog này đã tạo ra đủ sự quan tâm để bạn khám phá thêm về Apache Spark.

Chúng tôi đề xuất Hướng dẫn phát trực tuyến trên YouTube Spark sau đây từ Edureka để bắt đầu:

Spark Streaming | Ví dụ về phân tích tình cảm trên Twitter | Edureka

Loạt video này trên Spark Tutorial cung cấp thông tin cơ bản hoàn chỉnh về các thành phần cùng với các trường hợp sử dụng trong Đời thực như Phân tích tình cảm trên Twitter , Phân tích dự đoán trận đấu NBA , Hệ thống phát hiện động đất , Phân tích dữ liệu chuyến bayHệ thống đề xuất phim . Chúng tôi đã thiết kế cá nhân các trường hợp sử dụng để cung cấp kiến ​​thức chuyên môn toàn diện cho bất kỳ ai đang chạy mã.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến vấn đề này trong phần bình luận và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất. Nếu bạn muốn tìm hiểu Spark và xây dựng sự nghiệp trong miền Spark và xây dựng chuyên môn để thực hiện Xử lý dữ liệu quy mô lớn bằng cách sử dụng RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​và Scala với các trường hợp sử dụng trong Đời thực, hãy xem tương tác, trực tiếp của chúng tôi Trực tuyến đây, đi kèm với hỗ trợ 24 * 7 để hướng dẫn bạn trong suốt thời gian học tập.