1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo giữa kì chủ đề tìm hiểu về spark môn học cơ sở dữ liệu

23 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm Hiểu Về Spark
Tác giả Trần Ngọc Nam Hải, Đặng Tùng Anh, Nguyễn Đình Duy, Phạm Hưng
Người hướng dẫn Vũ Tiến Dũng
Trường học Trường Đại Học Khoa Học Tự Nhiên
Chuyên ngành Cơ Sở Dữ Liệu
Thể loại Báo Cáo
Năm xuất bản 2023 - 2024
Thành phố Hà Nội
Định dạng
Số trang 23
Dung lượng 335,76 KB

Nội dung

I.Tổng quan A.Tổng quan về BigData và MySQL 1.Big Data: Big Data là một thuật ngữ được sử dụng để mô tả lượng dữ liệu lớn, phức tạp và đa dạng mà không thể được xử lý bằng các công cụ v

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

KHOA TOÁN- CƠ-TIN HỌC

NĂM HỌC 2023 - 2024

Trang 2

DANH SÁCH SINH VIÊN THAM GIA BÁO CÁO

3 Apache Spark (cornell.edu)

4 Spark SQL & DataFrames | Apache Spark

5 Querying database data using Apache Spark™ SQL in Java :: DataStax Enterprise 5.1Documentation

6 https://www.tutorialspoint.com/apache_spark/apache_spark_introduction.htm

7 7-differences/

Trang 3

https://www.analyticsvidhya.com/blog/2022/06/apache-spark-vs-hadoop-mapreduce-top-MỤC LỤC

I.Tổng quan 3

A.Tổng quan về BigData và MySQL………

B.Tổng quan về Apache Spark………

II.Ưu Điểm và Ứng Dụng Của Apache Spark 3

A.Hiệu suất cao 3

B Sự linh hoạt trong xử lý dữ liệu 3

III Sử Dụng Apache Spark Trong Cơ Sở Dữ Liệu 3

A Tích hợp với ngôn ngữ SQL 3

B Xử lý và phân tích dữ liệu lớn 3

IV Thực Hành và Triển Khai Apache Spark 4

A Xây dựng ứng dụng đơn giản 4

B Triển khai ứng dụng trên môi trường thực tế 4

V Kết Luận và Hướng Phát Triển 4

A Tóm tắt kiến thức học được về Apache Spark trong môn cơ sở dữ liệu 4

B Đề xuất hướng phát triển………

……… 4

VI So sánh Spark với Hadoop……… 5

Trang 4

I.Tổng quan

A.Tổng quan về BigData và MySQL

1.Big Data:

 Big Data là một thuật ngữ được sử dụng để mô tả lượng dữ liệu lớn, phức tạp và đa dạng

mà không thể được xử lý bằng các công cụ và phương pháp truyền thống

 Đặc điểm chính của Big Data là khả năng xử lý và lưu trữ các tập dữ liệu rất lớn, thậmchí hàng terabytes hoặc petabytes, cũng như dữ liệu có cấu trúc, bán cấu trúc và khôngcấu trúc

 Big Data có 3 yếu tố quan trọng được gọi là "3V": Velocity (Tốc độ), Volume (Lượng),

và Variety (Đa dạng)

1 MySQL:

 MySQL là hệ thống quản lý cơ sở dữ liệu (DBMS) mã nguồn mở, rất phổ biến và được

sử dụng rộng rãi trên toàn thế giới

 MySQL dựa trên mô hình cơ sở dữ liệu quan hệ (Relational Database ManagementSystem - RDBMS), và nó sử dụng ngôn ngữ truy vấn SQL (Structured Query Language)

để tương tác với dữ liệu

 MySQL được sử dụng chủ yếu cho các ứng dụng có cấu trúc, như các hệ thống quản lýthông tin, trang web, ứng dụng di động, và các ứng dụng doanh nghiệp

Tóm lại, Big Data liên quan đến xử lý và lưu trữ các tập dữ liệu lớn và đa dạng, trong khiMySQL là một hệ thống quản lý cơ sở dữ liệu quan hệ thường được sử dụng cho dữ liệu có cấutrúc Mặc dù chúng có các ứng dụng riêng biệt, nhưng cũng có thể kết hợp để xử lý dữ liệu lớntrong môi trường cụ thể, sử dụng các công nghệ Big Data như Hadoop hoặc Spark kết hợp vớiMySQL để lưu trữ và truy xuất dữ liệu

B.Tổng quan về Apache Spark

1.Định nghĩa và mục tiêu sử dụng

 Apache Spark™ là một hệ thống xử lý dữ liệu phân tán mã nguồn mở Đây là một công

cụ đa ngôn ngữ cho việc thực hiện kỹ thuật dữ liệu, khoa học dữ liệu và học máy trên cácmáy đơn nút hoặc cụm

 Apache Spark có khả năng xử lý dữ liệu theo lô và dữ liệu luồng thời gian thực, sử dụngnhiều ngôn ngữ như: Python, SQL, Scala, Java hoặc R

 Apache Spark cung cấp một giao diện cho việc lập trình cụm với song song dữ liệu ngầm

và khả năng chịu lỗi

 Ban đầu được phát triển tại AMPLab của Đại học California, Berkeley, mã nguồn Sparksau đó đã được tặng cho Tổ chức Phần mềm Apache, tổ chức đã duy trì nó từ đó

 (Tóm tắt: Apache Spark là một hệ thống xử lý dữ liệu phân tán mã nguồn

mở, hỗ trợ nhiều ngôn ngữ và có khả năng xử lý dữ liệu theo lô và dữ liệuluồng thời gian thực Nó cung cấp một giao diện cho việc lập trình cụmvới song song dữ liệu ngầm và khả năng chịu lỗi.)

Trang 5

 Ví dụ về Spark trong Java:

 Tính tổng quát: Cung cấp các API cho các loại khối lượng công việc khác nhau, bao gồm

xử lý theo lô, luồng, học máy và xử lý đồ thị

 Độ trễ thấp: Apache Spark đạt độ trễ thấp thông qua xử lý trong bộ nhớ và lưu trữ cache

 Khả năng chịu lỗi: Trong Apache Spark, các lỗi không được coi là trường hợp đặc biệt.Điều này có nghĩa là hệ thống được thiết kế để xử lý lỗi và tiếp tục xử lý

Những mục tiêu này giúp Apache Spark trở thành một công cụ xử lý dữ liệu lớn một cách nhanhchóng và linh hoạt

2 Tính năng chính:

 Xử lý dữ liệu theo lô/Truyền tải dữ liệu: Hợp nhất việc xử lý dữ liệu theo lô và truyền tải

dữ liệu theo thời gian thực, sử dụng theo ngôn ngữ của người dùng: Python, SQL, Scala,Java hoặc R

Trang 6

 Phân tích SQL: Thực thi các truy vấn ANSI SQL một cách nhanh chóng, phân tán để tạobảng thông tin và báo cáo linh hoạt Apache Spark có thể thực hiện điều này nhanh hơnhầu hết các kho dữ liệu truyền thống.

 Khoa học dữ liệu ở quy mô lớn: Exploratory Data Analysis (EDA) (tạm dịch là phân tíchkhám phá dữ liệu) trên dữ liệu quy mô petabyte mà không cần thu nhỏ dữ liệu

 Học máy: Huấn luyện thuật toán học toán trên laptop và sử dụng cùng đoạn code để mởrộng các cụm máy chịu lỗi lên đến hàng nghìn máy

3 Cơ sở hạ tầng và kiến trúc

3.1.Resilient Distributed Datasets (RDDs):

Spark xoay quanh khái niệm về resilient distributed dataset (RDD) (tạm dịch là bộ dữ liệu phântán kiên định), là một tập hợp các phần tử chịu lỗi có thể vận hành song song với nhau Có haicách để tạo RDD: song song hóa một tập hợp trong chương trình điều khiển của người dùng,hoặc tham chiếu đến một tập dữ liệu trong một hệ thông lưu trữ bên ngoài, như một hệ thống tệpchia sẻ, HDFS, HBase, hoặc bất kỳ nguồn nào cung cấp HadoopInputFormat

 Hiệu năng và khả năng mở rộng: Spark SQL bao gồm một trình tối ưu hóa dựa trên chiphí, lưu trữ theo cột và tạo mã để làm cho các truy vấn nhanh hơn Đồng thời, nó có thể

mở rộng lên hàng nghìn nút và thực hiện các truy vấn kéo dài nhiều giờ bằng cách sửdụng công cụ Spark, đảm bảo khả năng chịu lỗi giữa truy vấn

c Spark Streaming:

Spark Streaming là một phần mở rộng của API Spark Core, cho phép xử lý luồng

dữ liệu trực tiếp mạnh mẽ, có khả năng mở rộng, chịu lỗi Dữ liệu có thể được thu

Trang 7

thập từ nhiều nguồn như Kafka, Kinesis, hoặc các socket TCP, và có thể được xử

lý bằng các thuật toán phức tạp được biểu diễn bằng các hàm cấp cao như map,reduce, join và window

 Featurization: trích xuất đặc trưng, biến đổi, giảm chiều và lựa chọn

 Pipelines: công cụ để xây dựng, đánh giá và tinh chỉnh Pipelines ML

 Persistence: lưu và tải thuật toán, mô hình và Pipelines

 Utilities: đại số tuyến tính, thống kê, xử lý dữ liệu, v.v

e GraphX:

GraphX là một thành phần mới trong Spark dành cho đồ thị và tính toán songsong trên đồ thị Ở mức độ cao, GraphX mở rộng RDD của Spark bằng cách giớithiệu một trừu tượng mới về đồ thị: một đa đồ thị có hướng với các thuộc tínhđược gắn vào mỗi đỉnh và cạnh Để hỗ trợ tính toán đồ thị, GraphX tiết lộ một tậphợp các toán tử cơ bản (ví dụ: subgraph, joinVertices và aggregateMessages)cũng như một biến thể tối ưu hóa của API Pregel Ngoài ra, GraphX bao gồm một

bộ sưu tập ngày càng phát triển của các thuật toán đồ thị và trình xây dựng để đơngiản hóa các nhiệm vụ phân tích đồ thị

II.Ưu Điểm và Ứng Dụng Của Apache Spark

A.Hiệu suất cao

1 So sánh với Hadoop MapReduce

Spark là sự nâng cấp so với Hadoop Map Reduce The điểm khác biệt lớn nhất giữa Spark vàMapReduce chính là Spark xử lý và ghi nhớ dữ liệu cho các tiến trình sau, trong khi MapReduce

xử lý dữ liệu trong bộ nhớ Vì vậy, dữ liệu được Spark xử lý nhanh hơn 100 lần so vớiMapReduce

2 Xử lý dữ liệu in-memory giúp tăng tốc độ xử lýTrong tính toán in-memory, dữ liệu được lưu trữ trong bộ nhớ tạm thời (RAM) thay vì các ổcứng chậm chạp và được xử lý song song Vì vậy chúng ta có thể xác định được kiểu mẫu, phântích những dữ liệu lớn Phương pháp này càng ngày càng phổ biến do tiết kiệm giá thành nênđược rất nhiều công ty ưa chuộng Hai phương thức chính của tính toán in-memory gồm :

 Dung lượng bộ nhớ RAM

 Xử lý song song phân phối

Trang 8

3 Tổng quan về tính toán in-memory trong Spark

Lưu dữ liệu trong bộ nhớ cải thiện hiệu suất đáng kể Trong Apache Spark, khái niệm chính làResilient Distributed Datasets (RDDs) Và RDDs được lưu trữ trong bộ nhớ bằng cách sử dụngphương thức cache() hoặc persist()

Khi chúng ta sử dụng phương thức cache(), tất cả các RDD được lưu trữ trong bộ nhớ Khi RDDlưu trữ giá trị trong bộ nhớ, dữ liệu không thể vừa với bộ nhớ sẽ được tính toán lại hoặc dữ liệuthặc là lưu trữ trên đĩa Khi cần RDD, chúng ta có thể trích xuất nó mà không cần truy cập đĩa.Điều này giúp giảm bớt độ phức tạp về không gian và thời gian cũng như chi phí của việc lưu trữtrên đĩa

Khả năng lưu trữ trong bộ nhớ của Spark thích hợp cho machine learning và xử lý theo mẻ nhỏ(micro-batch processing) Nó cung cấp thực thi nhanh hơn cho các công việc lặp đi lặp lại

Khi chúng ta sử dụng phương thức persist(), các RDD cũng có thể được lưu trữ trong bộ nhớ vàđược sử dụng trong các hoạt động song song Sự khác biệt giữa cache() và persist() là khi sửdụng cache(), mức lưu trữ mặc định là MEMORY_ONLY, trong khi khi sử dụng persist(), chúng

Trang 9

3.1 MEMORY_ONLY(chỉ lưu trữ trong bộ nhớ )

Spark storage level – memory only

Trong mức lưu trữ này của Spark, RDD được lưu trữ dưới dạng đối tượng JAVAđược giải mã trong JVM Nếu RDD không vừa với bộ nhớ, thì các phần còn lại sẽđược tính toán lại mỗi khi cần sử dụng

3.2 MEMORY_AND_DISK( lưu trữ trong bộ nhớ và ổ đĩa)

Spark storage level-memory and disk

Trang 10

Ở mức lưu trữ này, RDD được lưu trữ dưới dạng đối tượng JAVA được giải mãtrong JVM Nếu toàn bộ RDD không vừa với bộ nhớ, thì các phần còn lại sẽ đượclưu trữ trên đĩa, thay vì tính toán lại chúng mỗi khi cần sử dụng.

3.3 MEMORY_ONLY_SER(chỉ lưu trữ trong bộ nhớ dưới dạng đã được tuần tự hóa)

Trang 11

Mức lưu trữ này lưu trữ RDD dưới dạng đối tượng JAVA đã được serialize Nólưu trữ mảng một byte cho mỗi phân vùng Nó tương tự MEMORY_ONLYnhưng hiệu quả về không gian, đặc biệt khi chúng ta sử dụng serializer nhanh.

3.4 MEMORY_AND_DISK_SER(lưu trữ trong bộ nhớ và đĩa dưới dạng đã

được tuần tự hóa)

Spark storage level – memory and disk serialized

Trang 12

Mức lưu trữ này lưu trữ RDD dưới dạng đối tượng JAVA đã được serialize.Nếu toàn bộ RDD không vừa với bộ nhớ, thì các phần còn lại sẽ được lưu trữtrên đĩa, thay vì tính toán lại chúng mỗi khi cần sử dụng.

3.5 DISK_ONLY

Spark storage level-disk-only

Mức lưu trữ này chỉ lưu trữ các phân vùng của RDD trên đĩa

B Sự linh hoạt trong xử lý dữ liệu:

1 Hỗ trợ nhiều ngôn ngữ lập trình như Scala, Java, Python

Lập trình viên có thể viết các ứng dụng Spark bằng nhiều ngôn ngữ khác nhau Năm 2014, 84%người dùng sử dụng Scala, trong khi Java và Python cùng là 38% (Người dùng có thể sử dụngnhiều hơn 1 ngôn ngữ trong các ứng dụng của mình) Đến năm 2015, Spark hỗ trợ thêm ngôn ngữ

R, rất nhanh chóng có tới 18% người dùng R, Python cũng tăng lên 58%

Trang 13

2 Xử lý dữ liệu đa dạng từ batch đến stream.

Apache Spark có khả năng xử lý nhiều loại dữ liệu khác nhau Nó là một hệ thống tính toán phântán mạnh mẽ, được thiết kế để xử lý các tác vụ phức tạp trên dữ liệu lớn Dưới đây là một số loại

dữ liệu mà Apache Spark có thể xử lý:

 Dữ liệu cấu trúc (Structured Data): Spark hỗ trợ xử lý dữ liệu bảng, dữ liệu có cấu trúcnhư CSV, Parquet, Avro, JSON và thậm chí cả dữ liệu từ các cơ sở dữ liệu quan hệ

 Dữ liệu văn bản (Text Data): Spark có các API cho xử lý văn bản, cho phép bạn thựchiện các tác vụ như tìm kiếm, phân loại và phân tích nội dung văn bản

 Dữ liệu đồ thị (Graph Data): Spark hỗ trợ xử lý dữ liệu đồ thị thông qua thư việnGraphX, cho phép tính toán đồ thị và các phân tích liên quan đến mạng lưới dữ liệu

 Dữ liệu luồng (Streaming Data): Spark Streaming cho phép xử lý dữ liệu luồng thời gianthực, như dữ liệu từ các nguồn như Apache Kafka, Flume, và hệ thống luồng dữ liệukhác

 Dữ liệu hình ảnh và âm thanh (Image and Audio Data): Mặc dù Spark chủ yếu được sửdụng cho dữ liệu cấu trúc và văn bản, nhưng bạn có thể sử dụng các thư viện mở rộng để

xử lý dữ liệu hình ảnh và âm thanh

 Dữ liệu đa phương tiện (Multimedia Data): Bạn có thể sử dụng Spark để xử lý dữ liệu đaphương tiện như video, dữ liệu 3D, và nhiều định dạng khác

 Dữ liệu địa lý (Geospatial Data): Spark có thư viện hỗ trợ xử lý dữ liệu địa lý, giúp bạnthực hiện các phân tích liên quan đến vị trí địa lý

 Dữ liệu thời tiết (Weather Data): Spark có thể được sử dụng để xử lý dữ liệu thời tiết vàthực hiện các phân tích liên quan đến dự báo thời tiết và biến đổi khí hậu

Bên cạnh đó, Spark là công cụ hợp nhất để nhập dữ liệu từ nhiều nguồn khác nhaubằng các kỹ thuật khác nhau; xử lý dữ liệu thành nhiều định dạng dữ liệu nhưParquet, ORC, Avro hoặc bus tin nhắn Kafka; và lưu trữ nó trong một trong nhiềumục tiêu khác nhau

Trang 14

III Sử Dụng Apache Spark Trong Cơ Sở Dữ Liệu

A Tích hợp với ngôn ngữ SQL:

1 Sử dụng Spark SQL để thực hiện truy vấn dữ liệu

Bước 1: Tạo một đối tượng SparkSession sử dụng builder interface

Bước 2: Sau khi đã tạo đối tượng SparkSession, ta có thể sử dụng nó để tạo đối tượng DataFrame

từ truy vấn Truy vấn được thực hiện bằng cách gọi hàm SparkSession.sql

SparkSession spark = SparkSession builder()

.appName("My application name") config("option name", "option value") master("dse://1.1.1.1?connection.host=1.1.2.2,1.1.3.3") getOrCreate();

Trang 15

Bước 3: Đối tượng DataFrame sau khi được trả lại sẽ hỗ trợ các thao tác cơ bản của Spark

2 Kết hợp cả cơ sở dữ liệu phân tán và cơ sở dữ liệu phổ biến khác

Spark SQL cũng bao gồm một nguồn dữ liệu có thể đọc dữ liệu từ các cơ sở dữ liệu khác sửdụng JDBC Chức năng này nên được ưu tiên hơn việc sử dụng JdbcRDD Điều này là bởi vì kếtquả được trả về dưới dạng DataFrame và chúng có thể dễ dàng được xử lý trong Spark SQL hoặcđược kết hợp với các nguồn dữ liệu khác Nguồn dữ liệu JDBC cũng dễ sử dụng hơn từ Javahoặc Python vì nó không yêu cầu người dùng cung cấp ClassTag

Đoạn code trên tải bảng ‘people’ từ cơ sở dữ liệu postgres+ Bước 3: Thực hiện truy vấn SQL: Sau khi đã tải dữ liệu, ta có thể thực hiện truy vấn SQL trên DataFrame Ví dụ:

DataFrame employees = spark.sql("SELECT * FROM company.employees");

user=fred&password=secret") option("dbtable", "people") load();

Trang 16

Đoạn code trên tạo một chế độ xem tạm thời và sau đó thực hiện một truyvấn SQL để lấy tất cả các hàng từ chế độ xem.

B Xử lý và phân tích dữ liệu lớn:

1 Áp dụng Apache Spark trong việc xử lý lượng lớn dữ liệu cơ sở dữ liệu

 Việc áp dụng Apache Spark trong xử lý lượng lớn dữ liệu phụ thuộc vào nhu cầu và mụctiêu của người dùng Ví dụ một số cách là:

Sử dụng Spark SQL để truy vấn dữ liệu có cấu trúc hoặc bán cấu trúc từ các nguồn dữliệu khác nhau, như cơ sở dữ liệu quan hệ, NoSQL, Hadoop, v.v Spark SQL cho phépngười dùng sử dụng ngôn ngữ SQL hoặc HiveQL để truy vấn dữ liệu một cách nhanhchóng và hiệu quả

 Sử dụng Spark Streaming để xử lý dữ liệu theo thời gian thực từ các nguồn dữ liệu nhưKafka, Flume, Twitter, v.v Spark Streaming cho phép người dùng xử lý và phân tích dữliệu liên tục bằng các toán tử RDD và DStream

 Sử dụng MLlib để áp dụng các thuật toán machine learning và thống kê trên dữ liệu.MLlib cho phép người dùng sử dụng các thuật toán phân loại, hồi quy, phân cụm, hợp táclọc, giảm chiều, v.v và các tiện ích như đại số tuyến tính, thống kê, xử lý văn bản, v.v.trên dữ liệu phân tán

 Sử dụng GraphX để xử lý đồ thị và tính toán đồ thị trên dữ liệu GraphX cho phép ngườidùng xử lý và phân tích đồ thị bằng các toán tử đồ thị và Graph RDD

2 Thực hiện các thao tác phức tạp như join, filter, aggregate trên dữ liệu phân tán

a Join: Spark hỗ trợ nhiều loại join như ‘inner’, ‘outer’, ‘left_outer’,

‘right_outer’, ‘left_semi’, ‘left_anti’ Dưới đây là cách thực hiện một join inner

Dataset<Row> df1 = // your DataFrameDataset<Row> df2 = // your DataFrame

df.createOrReplaceTempView("people");

Dataset<Row> results = spark.sql("SELECT * FROM people");

Ngày đăng: 01/04/2024, 14:32

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w