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

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

Đ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

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ÊNKHOA TOÁN- CƠ-TIN HỌC

BÁO CÁO GIỮA KÌ

CHỦ ĐỀ : TÌM HIỂU VỀ SPARKMÔN HỌC : CƠ SỞ DỮ LIỆU

GIẢNG VIÊN HƯỚNG DẪN : VŨ TIẾN DŨNGNHÓM THỰC HIỆN : NHÓM 11

LỚP : K67A3 KHMT&TT

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.1 Documentation

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

7 https://www.analyticsvidhya.com/blog/2022/06/apache-spark-vs-hadoop-mapreduce-top-7-differences/

Trang 3

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

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ậm chí 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ông cấ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 Management System - 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 khi MySQL 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ấu trú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ớn trong 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ới MySQL để 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ác má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ụng nhiề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 Spark sau đó đã đượ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ệu luồng thời gian thực Nó 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.)

Trang 5

 Ví dụ về Spark trong Java:

 Tính đơn giản: Apache Spark cung cấp các API phong phú cho Scala, Java và Python giúp người dùng dễ sử dụng hơn.

 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 nhanh chó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ạo bả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ơn hầ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ích khá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ân tá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ó hai cá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ệp chia sẻ, HDFS, HBase, hoặc bất kỳ nguồn nào cung cấp HadoopInputFormat.

3.2.Kiến trúc:a Spark Core:

Là nền tảng của dự án Spark Core cung cấp các chức năng phân phối nhiệm vụ, lập lịch và các chức năng I/O cơ bản.

b Spark SQL:

 Spark SQL là mô-đun của Spark giúp xử lý dữ liệu có cấu trúc thông qua SQL và API Dataset Nó sử dụng thông tin về cấu trúc dữ liệu và phép toán để tối ưu hóa quá trình xử lý Điểm mạnh của Spark SQL là khả năng thống nhất, cho phép các nhà phát triển linh hoạt chuyển đổi giữa các API để biểu đạt phép biến đổi một cách tự nhiên nhất.

 Tính năng:

 Tích hợp với truy vấn SQL: Spark SQL điều chỉnh kế hoạch thực thi trong thời gian chạy.

 Hỗ trợ ANSI SQL

 Hỗ trợ dữ liệu có cấu trúc và dữ liệu phi cấu trúc: Spark SQL hoạt động trên các dữ liệu có cấu trúc và dữ liệu phi cấu trúc như JSON hoặc hình ảnh.

 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 chi phí, 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.

d MBlib:

MLlib là thư viện học máy (ML) của Spark Mục tiêu của nó là làm cho học máy thực tế có thể mở rộng và dễ dàng Ở mức độ cao, nó cung cấp các công cụ như:

 Các thuật toán ML: các thuật toán học phổ biến như phân loại, hồi quy, phân cụm và lọc cộng tác

 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 song song trên đồ thị Ở mức độ cao, GraphX mở rộng RDD của Spark bằng cách giới thiệ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ập hợ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 để đơn giả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ới MapReduce.

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ân tí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ụng phươ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 RDD lư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ệu thặ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ẽ đượ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.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_ONLY như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ụng nhiề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ân tá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úc như 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ực

hiệ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ện GraphX, 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 gian

thực, như dữ liệu từ các nguồn như Apache Kafka, Flume, và hệ thống luồng dữ liệu khá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 đa phươ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ạn thự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 nhau bằ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ều mụ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ết quả đượ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ừ Java hoặc Python vì nó không yêu cầu người dùng cung cấp ClassTag.

Các bước thực hiên:

+ Bước 1: Thêm JDBC driver cho cơ sở dữ liệu cụ thể của người dùng vào đường dẫn đến các lớp của Spark Ví dụ, câu lệnh để kết nối đến postgres từ Spark Shell là:

+ Bước 2: Tải dữ liệu từ cơ sở dữ liệu: Sau khi đã thêm JDBC, ta có thể tải bảng trong một cơ sở dữ liệu từ xa như là DataFrame, hoặc xem tạm thời bằng cách sử dụng API Data Sources Ví dụ về một đoạn code:

Đ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");

DataFrame managers = spark.sql("SELECT name FROM employees WHERE role = 'Manager' ");

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