Mục tiêu của đề tài - Mục đích của đề tài "Xây dựng một Spark pipeline sử dụng AWS và Delta Lake" là tạo ra một quy trình xử lý dữ liệu sử dụng công nghệ Spark trên nềntảng AWS và sử dụ
Trang 1TRƯỜNG ĐẠI HỌC KINH TẾ
KHOA THỐNG KÊ – TIN HỌC
BÁO CÁO THỰC TẬP NGHỀ NGHIỆP
NGÀNH HỆ THỐNG THÔNG TIN QUẢN LÝ
CHUYÊN NGÀNH QUẢN TRỊ HỆ THỐNG THÔNG TIN
ĐỀ TÀI: XÂY DỰNG MỘT SPARK PIPELINE SỬ DỤNG
AWS VÀ DELTA LAKE
Đơn vị thực tập : TMA Solutions Bình Định Giảng viên hướng dẫn : ThS Nguyễn Văn Chức
Trang 2LỜI CẢM ƠN
Đầu tiên em xin phép được gửi sự tri ân sâu sắc và lời cảm ơn chân thànhnhất đối với các thầy cô giáo Khoa Thống kê- Tin học trường Đại Học Kinh Tế ĐàNẵng đã tạo điều kiện để em có điều kiện thực tập Đặc biệt, em xin trân trọngcảm ơn thầy Nguyễn Văn Chức đã nhiệt tình hướng dẫn để em có thể hoàn thànhtốt kì thực tập này
Em xin gửi lời cảm ơn chân thành đến bạn và toàn bộ đội ngũ của TMASolutions Bình Định vì đã tạo điều kiện cho em tham gia thực tập nghề nghiệp tạiđây Em muốn bày tỏ sự biết ơn và trân trọng đối với cơ hội quý báu này và trảinghiệm thực tế mà em đã có được
Thời gian thực tập đã mang lại cho em một loạt những kiến thức hữu ích và
kỹ năng chuyên môn quan trọng Em đã có cơ hội áp dụng những kiến thức họcđược trong thực tế công việc và làm việc cùng với các chuyên gia trong lĩnh vực.Điều này đã giúp em hiểu rõ hơn về cách thức hoạt động của ngành nghề và pháttriển kỹ năng cá nhân của mình
Đặc biệt, em xin chân thành gửi lời cảm ơn đến Mentor Vũ Anh Tiến đãhướng dẫn trực tiếp, chỉ đạo và tạo mọi điều kiện giúp đỡ em trong suốt quá trìnhhọc cũng như thực tập tại đây
Trong suốt quá trình thực tập cũng như quá trình tìm hiểu, sẽ không thểtránh khỏi những sự thiếu sót và hạn chế Em rất mong nhận được những ý kiếnđóng góp và phản hồi từ quý thầy cô để em có thể khắc phục được những sai sótcũng như rút ra được những bài học cho mình và trau dồi thêm những kiến thứcmới
Một lần nữa, em xin bày tỏ lòng biết ơn chân thành và sự trân trọng sâu sắcđến tất cả mọi người đã đồng hành cùng em trong thời gian thực tập nghề nghiệpnày Em sẽ luôn mang theo những kinh nghiệm và sự học hỏi này trong tương lai
và cống hiến hết mình cho sự phát triển của bản thân và công ty
Trang 3LỜI CAM ĐOAN
Em, dưới tên gọi Lê Thị Kiều Linh cam đoan rằng báo cáo thực tập nghềnghiệp mà em đã viết là hoàn toàn dựa trên hiểu biết cá nhân của mình dưới sựhướng dẫn của mentor Vũ Anh Tiến, cùng với thông tin và dữ liệu được thu thập
từ các nguồn đáng tin cậy Em xin cam kết rằng tất cả các thông tin và kết quảđược trình bày trong báo cáo này là chính xác và không bị sai lệch hay giả mạo
Em xin cam đoan rằng em đã thực hiện thực tập nghề nghiệp một cách chânthực và trung thực, tuân thủ các quy định và hướng dẫn của cơ quan, tổ chức hoặcdoanh nghiệp em đã tham gia Em đã thực hiện nhiệm vụ được giao với sự tỉ mỉ,đúng thời hạn và đạt được những kết quả như mong đợi
Em cam đoan rằng em đã tuân thủ đạo đức nghề nghiệp và không tiết lộ bất
kỳ thông tin bí mật nào thuộc về tổ chức hoặc doanh nghiệp em đã thực tập
Em sẽ chịu trách nhiệm và sẵn sàng chấp nhận mọi hậu quả pháp lý nếunhững tuyên bố và cam đoan trong báo cáo này không chính xác Em xin camđoan rằng đã đọc và hiểu nội dung của lời cam đoan này và thực sự cam kết tuânthủ mọi điều khoản và cam kết được nêu trong đây
Trang 41.1.1 Tổng quan về TMA Solutions Bình Định 2
1.2.1 Công việc của Data Engineer 7 1.2.2 Kỹ năng để trở thành Data Engineer 7 1.2.3 Con đường phát triển sự nghiệp của DE 8
2.1 Khái niệm về Data Lake, Data warehouse, ETL 10
Trang 52.1.3 So sánh Data Lake và Data Warehouse 10
Trang 63.3 Truy vấn SQL [2] 31
4.4.3 Đồ data vào Data model 40
Trang 7DANH MỤC HÌNH ẢNH
Hình 1 Công ty TMA Solutions Bình Định 3
Hình 2 Sơ đồ cơ cấu tổ chức 6
Hình 3 Thành phần chính của Apache Spark 13
Hình 4 Tính năng của Apache Spark 14
Hình 5 Giao diện Databrick community 17
Hình 6 Tính năng của Delta Lake 19
Hình 7 Amazon Web Service 20
Hình 16 Bộ dữ liệu khảo sát về sức khỏe tâm thần. 30
Hình 17 Dữ liệu sau khi đã được xử lý 31
Trang 8Hình 32 Kết quả sau khi chạy Lambda 2 42
Hình 33 Upsert data thành công 44
Trang 9DANH MỤC BẢNG BIỂU
Bảng 1 So sánh Data Lake và Data Warehouse 11
Bảng 2 So sánh SQL và NoSQL 16
Trang 10DANH MỤC CÁC TỪ VIẾT TẮTAWS: Amazon Web Services
AI: Artificial Intelligence
IoT: Internet of Thing
ETL: Extract, Transform, Load
DE: Data Engineer
ML: Machine Learning
ACID: Atomicity, Consistency, Isolation và Durability YARN: Yet Another Resource Negotiator
ADLS (Azure Data Lake Storage)
GCS (Google Cloud Storage)
HDFS (Hadoop Distributed File System)
BI: Business Intelligence
JDBC: Java Database Connectivity
Trang 11LỜI MỞ ĐẦU
1 Mục tiêu của đề tài
- Mục đích của đề tài "Xây dựng một Spark pipeline sử dụng AWS và Delta
Lake" là tạo ra một quy trình xử lý dữ liệu sử dụng công nghệ Spark trên nềntảng AWS và sử dụng Delta Lake để lưu trữ và quản lý dữ liệu
2 Đối tượng và phạm vi nghiên cứu
- Đối tượng nghiên cứu chính là quy trình xử lý dữ liệu sử dụng Spark trên
AWS, sử dụng Delta Lake làm lớp lưu trữ Đề tài tập trung vào việc xây dựngmột pipeline hoàn chỉnh để xử lý dữ liệu theo lô (batching data) và thực hiệncác phân tích trên dữ liệu đó
- Nghiên cứu tập trung vào việc áp dụng công nghệ Spark trên nền tảng AWS để
xây dựng một pipeline xử lý dữ liệu phân tán Pipeline này có thể bao gồm cácbước như tải dữ liệu, tiền xử lý, phân tích và biến đổi dữ liệu, lưu trữ kết quảvào Delta Lake, và triển khai các tác vụ xử lý dữ liệu tự động theo yêu cầu
- Phạm vi nghiên cứu bao gồm các kỹ thuật và công nghệ liên quan đến Spark
và AWS như Amazon S3, Amazon Athena, Amazon Glue, API Gateway vàcác công cụ và thư viện hỗ trợ xử lý dữ liệu trên Spark như Spark SQL, SparkStreaming và Spark DataFrames
3 Kết cấu của đề tài
Đề tài được tổ chức gồm phần mở đầu, 4 chương nội dung và phần kếtluận
- Mở đầu
- Chương 1: Tổng quan công ty và lý thuyết về Data Engineer
- Chương 2: Cơ sở lý thuyết
- Chương 3: Xử lý dữ liệu bằng Pyspark và Delta Lake trong Databrick
- Chương 4: Triển khai đề tài
- Kết luận và hướng phát triển
Trang 12CHƯƠNG 1 TỔNG QUAN CÔNG TY VÀ LÝ THUYẾT VỀ DATA
ENGINEER 1.1 Giới thiệu tổng quát về TMA Solutions Bình Định
1.1.1 Tổng quan về TMA Solutions Bình Định
TMA được thành lập năm 1997, TMA là tập đoàn công nghệ hàng đầu ViệtNam với 4000 kỹ sư và khách hàng là những tập đoàn công nghệ cao hàng đầu thếgiới từ 30 quốc gia TMA hiện có 7 chi nhánh tại Việt Nam (6 tại Tp.HCM và 1 ở
Tp Quy Nhơn) cùng 6 chi nhánh ở nước ngoài (Mỹ, Úc, Canada, Đức, Nhật,Singapore)
Trải qua 25 năm hình thành và phát triển, với những nỗ lực không ngừngnghỉ, Tập đoàn Công Nghệ TMA đã trở thành một trong những tập đoàn côngnghệ hàng đầu của đất nước, TMA tự hào đã góp phần tiên phong đưa tên tuổiViệt Nam lên bản đồ công nghệ thế giới và vinh dự nhận được những danh hiệu,phần thưởng cao quý như cờ thi đua, bằng khen do UBND TP.HCM trao tặng, 18năm liền đạt danh hiệu TOP 10 doanh nghiệp xuất khẩu phần mềm, TOP 10 doanhnghiệp AI-IoT, Top 10 doanh nghiệp Fintech… đóng góp mạnh mẽ vào sự pháttriển của ngành CNTT và công nghệ cao của Việt Nam
Tháng 6 năm 2018, TMA đã mở chi nhánh tại Bình Định Sau 5 năm, TMABình Định đã phát triển nhanh chóng với hơn 600 kỹ sư, trong đó có nhiều kỹ sưđang làm việc tại TP.HCM đã trở về làm việc tại quê hương Là trung tâm phầnmềm đầu tiên tại Thung lũng Sáng tạo Quy Nhơn, Công viên Sáng tạo TMA mang
sứ mệnh trở thành trung tâm phát triển phần mềm và công nghệ cao hàng đầu tạimiền Trung, góp phần quan trọng đưa Thung lũng sáng tạo Quy Nhơn trở thànhmột điểm đến của công nghệ 4.0 tại Việt Nam Công viên Sáng tạo TMA ba gồmTrung tâm Phát triển Phần Mềm, Xưởng Phần mềm, Trung tâm R&D, Trung tâmKhoa học Dữ liệu, Học viện Công Nghệ…với tổng diện tích sử dụng hơn15,000m2
Tháng 8 năm 2018, TMA đã khởi công xây dựng Công viên Sáng tạo TMABình Định (TMA Innovation Park – TIP) trên 10 hecta tại Thung lũng Sáng tạo
Trang 13Quy Nhơn (Quy Nhon Innovation Park – QNIVY) với vốn đầu tư hàng trăm tỷđồng thể hiện quyết tâm và cam kết mạnh mẽ trong việc phát triển ngành CNTTtại miền Trung và nâng tầm giá trị chất xám của con người nơi đây Hiện thực hóamong muốn trở về xây đắp cho quê hương Bình Định nói riêng và khu vực miềntrung nói chung của vợ chồng Chủ tịch Tiến sĩ Nguyễn Hữu Lệ và CEO-Bùi NgọcAnh.
Hình 1 Công ty TMA Solutions Bình Định 1.1.2 Lĩnh vực hoạt động
Tài chính, ngân hàng và bảo hiểm
- Quản lý tài sản, vốn và đầu tư
- Thanh toán di động
- Phân tích tài chính
- Quy trình bảo hiểm
- Hỗ trợ bán bảo hiểm
Thương mại điện tử và phân phối
- Tư vấn, thiết kế, phát triển và triển khai hệ thống phần mềm trọn gói vềthương mại điện tử
Trang 14- Quản lý phân phối sản phẩm
- Phân tích hành vi khách hàng, dự báo doanh số
- POS (Point of Sale)
- Theo dõi sức khỏe người già 24/24
- Quản lý người cách ly tại nhà
- Phân tích năng lực học sinh
- Quản lý và điểm danh tự động, trường họcViễn thông
Trang 15Vận tải và logistic
- Quản lý giao nhận
- Quản lý tài sản
- Quản lý xe và tàu biển
- Phân tích giao thông
Khách sạn và du lịch
- Website dịch vụ khách sạn và du lịch
- Phần mềm dịch vụ khách sạn
- Quản lý khách sạn tự động
Nông nghiệp và chế biến thực phẩm
- Áp dụng các công nghệ mới (AI, IoT, Big data, drone…) để hiện đại hóangành nông nghiệp cho khách hàng Úc, New Zealand, Nhật Bản
1.1.3 Cơ cấu tổ chức
Trang 16Hình 2 Sơ đồ cơ cấu tổ chức
1.2 Tổng quan về vị trí Data Engineer
Là vị trí tập trung vào xây dựng cơ sở hạ tầng cho việc lưu trữ và xử lý các dữliệu lớn, bao gồm các hệ thống cơ sở dữ liệu, hệ thống lưu trữ đám mây và cáccông nghệ liên quan đến dữ liệu
Các kỹ sư phần mềm này thường chịu trách nhiệm xây dựng các đường dẫn dữliệu để tập hợp thông tin từ các hệ thống nguồn khác nhau Họ tích hợp, hợp nhất,làm sạch dữ liệu và cấu trúc nó để sử dụng trong các ứng dụng phân tích Họ đặtmục tiêu làm cho dữ liệu dễ dàng truy cập và tối ưu hóa hệ sinh thái dữ liệu lớncủa tổ chức
Lượng dữ liệu mà một Data Engineer làm việc thay đổi theo quy mô của tổchức Công ty càng lớn, kiến trúc phân tích càng phức tạp và họ sẽ phải nhiều chịutrách nhiệm hơn về dữ liệu Các kỹ sư dữ liệu làm việc cùng với các nhóm khoahọc dữ liệu, cải thiện tính minh bạch của dữ liệu và cho phép các doanh nghiệpđưa ra các quyết định kinh doanh đáng tin cậy hơn
Trang 171.2.1 Công việc của Data Engineer
Data engineer thường làm việc như một phần của nhóm phân tích cùng với cácnhà khoa học dữ liệu Họ cung cấp dữ liệu ở các định dạng có thể sử dụng đượccho các nhà khoa học dữ liệu, những người chạy các truy vấn và thuật toán dựatrên thông tin cho các ứng dụng phân tích dự đoán, học máy và khai thác dữ liệu Các Data Engineer cũng cung cấp dữ liệu tổng hợp cho giám đốc điều hành vànhà phân tích doanh nghiệp cũng như những người dùng cuối khác để họ có thểphân tích và áp dụng kết quả vào việc cải thiện hoạt động kinh doanh
Data Engineer xử lý cả dữ liệu có cấu trúc và phi cấu trúc Dữ liệu có cấu trúc
là thông tin có thể được tổ chức thành một kho lưu trữ được định dạng giống nhưmột cơ sở dữ liệu Dữ liệu phi cấu trúc – chẳng hạn như văn bản, hình ảnh, tệp âmthanh và video – không tuân theo các mô hình dữ liệu thông thường
Một kỹ sư dữ liệu phải hiểu các cách tiếp cận khác nhau đối với kiến trúc dữliệu và các ứng dụng chúng để xử lý cả hai kiểu dữ liệu trên Một loạt các côngnghệ về dữ liệu lớn, chẳng hạn như các khung xử lý và nhập dữ liệu nguồn mở,cũng là một phần của bộ công cụ của trình xử lý dữ liệu
1.2.2 Kỹ năng để trở thành Data Engineer
Kỹ năng lập trình: Data Engineer cần phải có kiến thức về lập trình, bao gồm các ngôn ngữ lập trình như Python, Java, Scala, SQL
Kỹ năng xây dựng cơ sở dữ liệu: Data Engineer cần có khả năng thiết kế, triểnkhai và quản lý các cơ sở dữ liệu lớn, bao gồm các hệ thống cơ sở dữ liệu quan hệ
Trang 18Kiến thức về bảo mật dữ liệu: Data Engineer cần hiểu về các giải pháp bảo mật
dữ liệu và có khả năng triển khai các giải pháp này trên các hệ thống dữ liệu lớn
Kỹ năng về triển khai hệ thống: Data Engineer cần có khả năng triển khai các
hệ thống dữ liệu lớn trên các môi trường sản xuất và có khả năng quản lý các hệthống này
Kỹ năng tư duy logic: Data Engineer cần có khả năng tư duy logic để phân tíchvấn đề và xây dựng các giải pháp kỹ thuật
Kỹ năng làm việc nhóm: Data Engineer thường làm việc trong một nhóm, do
đó cần có kỹ năng làm việc nhóm để đạt được kết quả tốt nhất
Kỹ năng giao tiếp: Data Engineer cần có khả năng giao tiếp tốt để trình bày cácphân tích dữ liệu và giải thích các kết quả cho các bên liên quan
1.2.3 Con đường phát triển sự nghiệp của DE
Con đường phát triển sự nghiệp của một Data Engineer (DE) có thể phụ thuộcvào nhiều yếu tố, bao gồm kỹ năng cá nhân, mục tiêu nghề nghiệp, cơ hội trongcông ty và ngành công nghiệp, và xu hướng công nghệ hiện tại Dưới đây là một
số con đường phát triển sự nghiệp mà một DE có thể theo đuổi
- Xây dựng kỹ năng cơ bản: Một DE cần có kiến thức và kỹ năng về cáccông nghệ và công cụ liên quan đến xử lý dữ liệu như Apache Hadoop,Spark, SQL, Python, Scala, ETL (Extract, Transform, Load), và quy trình
xử lý dữ liệu
- Mở rộng kiến thức về công nghệ: công nghệ đám mây (Cloud Computing),
dữ liệu lớn (Big Data), máy học (Machine Learning), và trí tuệ nhân tạo(Artificial Intelligence)
- Phát triển kỹ năng liên quan đến công nghệ đám mây: Amazon WebServices (AWS), Microsoft Azure, hoặc Google Cloud Platform (GCP)
- Thăng tiến trong sự nghiệp: DE có thể tiến xa hơn trong sự nghiệp bằngcách thăng tiến vị trí hoặc chuyển sang các vai trò liên quan như DataArchitect, Data Scientist, hoặc Solution Architect
1.2.4 Mức lương
Trang 19Đối với sinh viên thực tập, sinh viên mới ra trường chưa có kinh nghiệm, mứcthu nhập khoảng 7 – 10 triệu đồng/ tháng.
Các nhân viên có kinh nghiệm, làm việc lâu năm thì mức lương có thể từ 15 –
25 triệu đồng/tháng và sẽ được tăng lên theo thời gian, khả năng, kinh nghiệm
Vị trí Manager hay Driector, mức lương thường được tính bằng USD, trungbình từ 30 – 66 triệu đồng/tháng quy đổi ra USD bằng 1500 USD/tháng đến 3000USD/ tháng
Trang 20CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1 Khái niệm về Data Lake, Data warehouse, ETL
2.1.1 Data Lake
Data Lake là một kho lưu trữ tập trung được thiết kế để lưu trữ, xử lý vàbảo mật một lượng lớn dữ liệu có cấu trúc, bán cấu trúc và phi cấu trúc Nó có thểlưu trữ dữ liệu ở định dạng gốc và xử lý mọi loại dữ liệu khác nhau, bỏ qua cácgiới hạn về kích thước Nó cung cấp số lượng dữ liệu cao để tăng hiệu suất phântích và tích hợp gốc
Vì dữ liệu được giữ nguyên gốc nên doanh nghiệp không cần phải đầu tưcho việc biến đổi, phân loại và lưu trữ dữ liệu đến khi có nhu cầu sử dụng Những
dữ liệu này khi có nhu cầu sử dụng phải cần được xử lý thêm
Data lake thường được sử dụng trong các ứng dụng big data và machinelearning, vì chúng cung cấp một cách để lưu trữ và phân tích các lượng lớn dữ liệumột cách nhanh chóng và hiệu quả Tuy nhiên, chúng cũng có thể được sử dụngtrong các ứng dụng quy mô nhỏ hơn, chẳng hạn như thông tin doanh nghiệp vàphân tích, nơi khả năng lưu trữ và phân tích các lượng lớn dữ liệu đa dạng là quantrọng
2.1.2 Data Warehouse
Data Warehouse là 1 kho lưu trữ dữ liệu cho các doanh nghiệp Các dữ liệuđược lưu trữ đôi khi phải trải qua quá trình trích xuất, chuyển đổi và xử lý qua quytrình ETL trước khi nhập kho lưu trữ Biến đổi và phân loại DL từ các nguồn khácnhau của DN Sẵn sàng để phục vụ cho các mục đích khác, đặc biệt là báo cáo vàphân tích
Data warehouse được thiết kế để hỗ trợ việc phân tích dữ liệu phức tạp vàtruy vấn dữ liệu lớn một cách hiệu quả Nó cung cấp một cách tiếp cận phù hợpvới các công cụ phân tích dữ liệu, bao gồm các truy vấn phức tạp và các báo cáođịnh kỳ Data warehouse cũng có thể được sử dụng để lưu trữ lịch sử dữ liệu, giúpngười dùng truy xuất và phân tích dữ liệu theo thời gian
Trang 212.1.3 So sánh Data Lake và Data Warehouse
Dữ liệu Các Data Lake lưu trữ
mọi thứ tập trung vào các Quy trìnhData Warehouse chỉ
nghiệp vụ
được xử lý Dữ liệu được xử lýcao
Loại dữ liệu Nó có thể là phi cấu
trúc, bán cấu trúc hoặc có
cấu trúc
Nó chủ yếu ở dạngbảng và cấu trúc
Nhiệm vụ Chia sẻ quyền quản lý
dữ liệu truy xuất dữ liệuĐược tối ưu hóa để
Tính nhanh
nhẹn
Rất nhanh nhẹn,configure và reconfigure nếu
cần
So với Data lake, nókém linh hoạt hơn và cócấu hình cố định
Người dùng Data Lake chủ yếu
được sử dụng bởi Data
Scientist
Các chuyên gia kinhdoanh sử dụng rộng rãiData Warehouse
lưu trữ với chi phí thấp thời gian phản hồi nhanhBộ nhớ đắt tiền có
được sử dụng
kiểm soát thấp hơn dữ liệu tốt hơn.Cho phép kiểm soát
Thay thế
EDW nguồn cho EDWData Lake có thể là (không thay thế)Bổ sung cho EDW
Tốn nhiều thời gian
để giới thiệu nội dung mới.Mức độ chi Dữ liệu ở mức độ chi Dữ liệu ở cấp độ chi
Trang 22tiết của dữ liệu tiết hoặc chi tiết thấp tiết tóm tắt hoặc tổng hợp.
Quá trình ETL bao gồm các bước sau:
- Extract: Lấy dữ liệu từ các nguồn khác nhau, chẳng hạn như cơ sở dữ
liệu, tệp dữ liệu, API, và các ứng dụng khác
- Transform: Chuyển đổi dữ liệu để phù hợp với mô hình dữ liệu của kho
dữ liệu tập trung (Data Warehouse hoặc Data Lake) Bước này có thể bao gồm việc thay đổi định dạng dữ liệu, loại bỏ dữ liệu trùng lặp, kết hợp dữ liệu từ nhiều nguồn khác nhau, và các bước biến đổi khác để làmcho dữ liệu phù hợp với mục đích phân tích và báo cáo
- Load: Tải dữ liệu đã được chuyển đổi vào kho dữ liệu tập trung Bước
này có thể bao gồm việc tạo các bảng mới, cập nhật các bảng hiện có, vàcác bước khác để đảm bảo rằng dữ liệu được lưu trữ theo cách phù hợp với mô hình dữ liệu của kho dữ liệu tập trung
Quá trình ETL là một bước quan trọng trong quá trình xây dựng và duy trì các kho dữ liệu tập trung, và nó được sử dụng rộng rãi trong các ứng dụng phân tích dữ liệu, bao gồm cả big data và business intelligence
2.2 Giới thiệu Python, Apache Spark
2.2.1 Python
Trang 23Python là một ngôn ngữ lập trình được sử dụng rộng rãi trong các ứng dụngweb, phát triển phần mềm, khoa học dữ liệu và máy học (ML) Các nhà phát triển
sử dụng Python vì nó hiệu quả, dễ học và có thể chạy trên nhiều nền tảng khácnhau Phần mềm Python được tải xuống miễn phí, tích hợp tốt với tất cả các loại
hệ thống và tăng tốc độ phát triển
Python có tính linh hoạt cao và được sử dụng trong nhiều lĩnh vực khác nhaunhư phát triển web, khoa học dữ liệu, trí tuệ nhân tạo, đồ họa máy tính, trò chơiđiện tử, và nhiều ứng dụng khác Nó cũng hỗ trợ nhiều thư viện và frameworkscho phép các lập trình viên xây dựng các ứng dụng phức tạp một cách nhanhchóng và hiệu quả
Python cũng được phát triển như một ngôn ngữ lập trình hướng đối tượng, hỗtrợ nhiều tính năng như đa kế thừa, đa hình, và quản lý bộ nhớ tự động
2.2.2 Apache Spark
Apache Spark là một Framework phân tán mã nguồn mở được sử dụng để xử
lý và phân tích dữ liệu lớn Spark cung cấp khả năng xử lý dữ liệu phân tán, tăngtốc độ xử lý dữ liệu và giảm thời gian tính toán
Spark cung cấp một công cụ đơn giản để xử lý dữ liệu hàng loạt, xử lý dữ liệuthời gian thực, machine learning và xử lý đồ thị Nó được thiết kế để chạy trên mộtcụm máy và có thể xử lý các tập dữ liệu lớn song song trên nhiều nút Spark hỗ trợnhiều ngôn ngữ lập trình như Java, Scala, Python và R, giúp nó trở nên dễ dàngtiếp cận với đa dạng các nhà phát triển
● Thành phần chính của Apache Spark
Hình 3 Thành phần chính của Apache Spark
Trang 24Apache Spark gồm có 5 thành phần chính: Spark Core, Spark Streaming, Spark
SQL, MLlib và GraphX
- Spark Core là thành phần cốt lõi của Apache Spark, các thành phần khác muốn
hoạt động đều cần thông qua Spark Core Spark Core có vai trò thực hiện côngviệc tính toán và xử lý trong bộ nhớ (In-memory computing), đồng thời nócũng tham chiếu đến các dữ liệu được lưu trữ tại các hệ thống lưu trữ bênngoài
- Spark Core: là thành phần cốt lõi của Spark, cung cấp các tính năng và API cho
việc xử lý dữ liệu phân tán
- Spark SQL: Spark SQL tập trung vào việc xử lý dữ liệu có cấu trúc cung cấp
API để truy vấn dữ liệu từ các nguồn dữ liệu khác nhau bằng cách sử dụngSQL
- Spark Streaming: cho phép xử lý dữ liệu trực tiếp (real-time) bằng cách chia
nhỏ dữ liệu thành các batch nhỏ và xử lý chúng
- MLlib: cung cấp các API để xây dựng các mô hình học máy và thực hiện các
tác vụ trích xuất đặc trưng (feature extraction) trên các RDD
- GraphX: cung cấp các API để xử lý đồ thị (graph) và các thuật toán liên quan
đến đồ thị
● Một số tính năng của Apache Spark
Hình 4 Tính năng của Apache Spark
Tốc độ: Spark có thể xử lý lượng dữ liệu lớn nhanh hơn nhiều so với MapReduce
Trang 25Bộ nhớ đệm mạnh mẽ: Spark cung cấp khả năng lưu trữ bộ nhớ đệm và ổ cứng
mạnh mẽ, cho phép dữ liệu được lưu trữ tạm thời trong bộ nhớ để giảm thời giantruy cập dữ liệu từ đĩa
Triển khai: Spark có thể triển khai trên nhiều hệ thống khác nhau, bao gồm Mesos,
Hadoop thông qua YARN hoặc trình quản lý cụm riêng của Spark
Xử lý thời gian thực: Spark hỗ trợ xử lý dl time thực với khả năng xử lý dữ liệu
hàng loạt (batch data) và dữ liệu liên tục (streaming data) Spark Streaming chophép xử lý dữ liệu online và thực hiện tính toán trên Stream data
Đa ngôn ngữ: Spark hỗ trợ nhiều ngôn ngữ lập trình, bao gồm Java, Scala, Python
và R
Machine Learning: Spark cung cấp thư viện Machine Learning cho phép xử lý các
tác vụ liên quan đến ML trên dữ liệu lớn MLlib hỗ trợ các thuật toán phân loại,phân cụm, hồi quy và giảm chiều dữ liệu
2.3 SQL và NoSQL
2.3.1 SQL
SQL (viết tắt của Structured Query Language) là ngôn ngữ truy vấn cấu trúc
Nó được dùng để xử lý cơ sở dữ liệu quan hệ SQL được chia thành các mệnh đề,biểu thức, toán tử, truy vấn và truy vấn con
Lập trình SQL có thể được sử dụng hiệu quả để chèn, tìm kiếm, xóa bản ghi,cập nhật cơ sở dữ liệu SQL có thể làm được rất nhiều thứ, không giới hạn cácviệc như tối ưu hóa và duy trì cơ sở dữ liệu Các cơ sở dữ liệu quan hệ như cơ sở
dữ liệu MySQL, Oracle, MS SQL,…
2.3.2 NoSQL
NoSQL (viết tắt của Non-Relational SQL) được sử dụng với mục đích gầngiống với SQL Nhưng nó là đối với cơ sở dữ liệu không quan hệ, không yêu cầumột lược đồ cố định và dễ dàng mở rộng Cơ sở dữ liệu NoSQL được sử dụng chocác kho dữ liệu phân tán với nhu cầu lưu trữ dữ liệu khổng lồ NoSQL được sửdụng cho Big Data và các ứng dụng web thời gian thực
Trang 26Một hệ thống cơ sở dữ liệu NoSQL bao gồm một loạt các công nghệ cơ sở dữliệu có thể lưu trữ dữ liệu có cấu trúc, bán cấu trúc, không có cấu trúc và đa hình.
Tốt hơn SQL
vì bỏ qua các ràngbuộc
Mở rộng theo
chiều ngang
Có thể thực hiện đượcnhưng quá trình mở rộng phứctạp nếu đã tồn tại dữ liệu trongDatabase
Mở rộng dễdàng
Tốc độ read/
write
Kém hơn NoSQL vì phảiđảm bảo tính ràng buộc dữ liệugiữa các bảng
Nếu sử dụng nhiều Serverthì phải đảm bảo tính nhất quán
về dl của các server với nhau
Tốc độ nhanhhơn SQL vì bỏ qua cơchế ràng buộc củabảng
Vì dữ liệuđược lưu trong RAMsau đó mới đẩy xuốngHDD và tính nhấtquán cuối
Việc lấy báocáo trực tiếp từNOSQL chưa được
Trang 27báo cáo dụng công cụ hỗ trợ để báo cáo hỗ trợ tốt, thực hiện
chủ yếu thông quagiao diện ứng dụng
Bảng 2 So sánh SQL và NoSQL
2.4 Tổng quan Databrick community
Hình 5 Giao diện Databrick community
Databricks Community Edition là một phiên bản miễn phí của Databricks,một nền tảng phân tích dữ liệu được phát triển bởi công ty Databricks Nó chophép người dùng trải nghiệm các tính năng của Databricks và Apache Spark trênmột môi trường đám mây
Databricks Community Edition cung cấp một môi trường tích hợp để phântích dữ liệu, bao gồm Jupyter Notebook, Apache Spark và các thư viện tích hợpcho xử lý dữ liệu và machine learning Nó cũng cung cấp một số tài liệu và khóahọc trực tuyến để hướng dẫn người dùng sử dụng nền tảng
Databricks Community Edition được sử dụng rộng rãi bởi các nhà pháttriển, sinh viên và các chuyên gia trong lĩnh vực khoa học dữ liệu và trí tuệ nhân
Trang 28tạo để phân tích dữ liệu và xây dựng các ứng dụng machine learning Nó cũng chophép người dùng chia sẻ các tệp notebook và tài nguyên khác với cộng đồng.
2.5 Khái niệm về Lakehouse, Delta Lake
mẽ và đa dạng, bao gồm:
Dữ liệu phi cấu trúc: Lakehouse cho phép lưu trữ dữ liệu phi cấu trúc(unstructured data) như tệp tin văn bản, hình ảnh, video, và các dữ liệu có cấu trúcnhư JSON, Avro, Parquet, và ORC
Dữ liệu cấu trúc: Lakehouse hỗ trợ lưu trữ các dữ liệu có cấu trúc (structureddata) như các bảng dữ liệu, giúp cho việc truy vấn và phân tích dữ liệu được dễdàng hơn
Delta Lake: Lakehouse sử dụng Delta Lake làm phương tiện lưu trữ dữ liệu cơ
sở, cung cấp các tính năng như ACID transactions, time travel, schemaenforcement and evolution, metadata management, và scalability
Data Lake và Data Warehouse: Lakehouse kết hợp tính năng của data lake (chỉcho phép lưu trữ dữ liệu phi cấu trúc) và data warehouse (chỉ cho phép lưu trữ dữliệu có cấu trúc), giúp cho việc lưu trữ và quản lý dữ liệu trở nên đơn giản và hiệuquả hơn
Tích hợp với công cụ phân tích: Lakehouse tích hợp dễ dàng với các công cụphân tích dữ liệu như Apache Spark, Apache Hive, và các công cụ BI (BusinessIntelligence) khác
Trang 292.5.2 Delta Lake
Delta Lake là một dự án mã nguồn mở cho phép xây dựng kiến trúc Lakehousetrên các Data Lake Delta Lake cung cấp các ACID transactions (Atomicity,Consistency, Isolation, Durability), xử lý siêu dữ liệu có thể mở rộng và hợp nhất
xử lý dữ liệu hàng loạt( batch) và truyền trực tuyến (streaming) trên các hồ dữ liệuhiện có, chẳng hạn như S3, ADLS, GCS và HDFS
Delta Lake là một công nghệ lưu trữ dl mã nguồn mở được xây dựng trênApache Spark Được sử dụng để quản lý dữ liệu lớn và phức tạp Delta Lake cungcập một số tính năng quản lý metadata, kiểm soát phiên bản và khả năng phục hồi
dữ liệu, giúp cho việc xử lý và quản lý dữ liệu trên hệ thống lưu trữ lớn trở nên dễdàng hơn
● Tính năng của Delta Lake
Hình 6 Tính năng của Delta Lake
- ACID transactions trên Spark: các mức độ cô lập có thể tuần tự hóa đảm bảo
rằng người đọc không bao giờ nhìn thấy dữ liệu không nhất quán
- Xử lý siêu dữ liệu có thể mở rộng: Tận dụng sức mạnh xử lý phân tán của
Spark để xử lý tất cả metadata cho các bảng quy mô petabyte với hàng tỷ tệpmột cách dễ dàng
Trang 30- Streaming và Batch: một bảng trong Delta Lake là một bảng hàng loạt cũng
như nguồn phát trực tuyến và phần chìm Nhập dữ liệu trực tuyến, chèn lấplịch sử hàng loạt, truy vấn tương tác, tất cả đều hoạt động hiệu quả
- Thực thi giản đồ: tự động xử lý các biến thể giản đồ để ngăn việc chèn các bản
ghi xấu trong quá trình nhập
- Time travel: Lập phiên bản dữ liệu cho phép lùi thời gian, theo dõi lịch sử
kiểm tra đầy đủ và các thử nghiệm học máy có thể lặp lại
- Upserts và deletes: hỗ trợ các thao tác hợp nhất, cập nhật và xóa để kích hoạt
các trường hợp sử dụng phức tạp như: thao tác thu thập dữ liệu thay đổi, kíchthước thay đổi chậm (SCD), upserts trực tuyến,…
Hình 7 Amazon Web Service 2.6.1 S3 service
Amazon Simple Storage Service (Amazon S3): là một dịch vụ lưu trữ đối tượng
cung cấp khả năng mở rộng, tính sẵn có của dữ liệu, bảo mật và hiệu suất hàngđầu trong ngành Khách hàng thuộc mọi quy mô, ngành nghề có thể sử dụng
Trang 31Amazon S3 để lưu trữ và bảo vệ mọi lượng dữ liệu cho nhiều trường hợp sử dụngnhư: data lakes, websites, ứng dụng di động, sao lưu và khôi phục, lưu trữ, ứngdụng doanh nghiệp, thiết bị IoT và big data analytics S3 cung cấp các tính năngquản lý để có thể tối ưu hóa, sắp xếp và định cấu hình quyền truy cập vào dữ liệucủa mình nhằm đáp ứng các yêu cầu tuân thủ, tổ chức và kinh doanh cụ thể.
Hình 8 AWS S3
● Thành Phần và cấu trúc
Hình 9 Thành phần và cấu trúc của Aws S3
- Buckets: các “folder” ở tầng root mà chúng ta tạo trong S3 gọi là các
bucket
Các folder con bạn tạo trong bucket gọi là các folder
- Objects: các file được lưu trong bucket được gọi là các object
Trang 32- Regions: Khi tạo một bucket, bạn cần phải chọn một region nào đó cho nó Điều này có nghĩa rằng bất cứ dữ liệu nào bạn upload lên bucket S3 sẽ nằm trong data center ở region đó.
● Các tính năng của AWS S3
- Storage classes
- Storage management
- Access management and security
- Data processing
- Storage logging and monitoring
- Analytics and insights
- Strong consistency
2.6.2 Athena service
Amazon Athena là một dịch vụ phân tích tương tác phi máy chủ, được xâydựng trên các khung nguồn mở và hỗ trợ định dạng tệp cũng như bảng mở Athenaphân tích hàng petabyte dữ liệu ở chính nơi lưu trữ dữ liệu đó Phân tích dữ liệuhoặc xây dựng ứng dụng từ một hồ dữ liệu thuộc Dịch vụ lưu trữ S3 và hơn 25nguồn dữ liệu khác, bao gồm các nguồn dữ liệu tại chỗ hoặc các hệ thống đámmây khác sử dụng SQL hay Python Athena được xây dựng dựa trên các công cụnguồn mở Trino và Presto cùng với khung Apache Spark, không yêu cầu phảicung cấp tài nguyên hay cấu hình
Trang 33Hình 10 AWS Athena
● Sử dụng:
- Chạy truy vấn liên kết: Truy vấn SQL để phân tích dữ liệu trong các nguồn dữ
liệu quan hệ, phi quan hệ, đối tượng và tùy chỉnh chạy tại chỗ hoặc trên đámmây
- Chuẩn bị dữ liệu cho các mô hình ML: Sử dụng các mô hình ML trong truy
vấn SQL hoặc Python để đơn giản hóa các tác vụ phức tạp như phát hiện bấtthường, phân tích nhóm khách hàng và dự đoán doanh số bán hàng
- Xây dựng công cụ đối chiếu dữ liệu lớn phân tán: Triển khai công cụ đối chiếu
qua công cụ được xây dựng cho đám mây để xác thực lượng lớn dữ liệu mộtcách hiệu quả trên quy mô lớn
- Phân tích dữ liệu Gg Analytics: Trích xuất dữ liệu Gg Analytics bằng
Analytics bằng Amazon AppFlow, lưu trữ trong Amazon S3 rồi truy vấn dữliệu này
Trang 34Hình 11 AWS CloudFormation
● Các tính năng chính của AWS CloudFormation bao gồm:
- Infrastructure as Code: AWS CloudFormation cho phép bạn sử dụng mã
để định nghĩa và triển khai hạ tầng AWS của bạn, giúp đảm bảo tính nhấtquán và tái sử dụng trong các quy trình triển khai
- Tự động hóa triển khai hạ tầng: AWS CloudFormation tự động triển khai
tài nguyên AWS của bạn, giúp giảm thiểu thời gian và chi phí triển khai
hạ tầng
- Quản lý cấu hình: AWS CloudFormation cho phép bạn quản lý cấu hình
của tài nguyên AWS của bạn, bao gồm cả cấu hình mạng và cấu hình ứngdụng
- Điều khiển phiên bản: AWS CloudFormation cho phép bạn quản lý phiên
bản của tài nguyên AWS của bạn, giúp bạn dễ dàng khôi phục lại cácphiên bản trước đó nếu cần
- Truy vấn tài nguyên: AWS CloudFormation cho phép bạn truy vấn thông
tin về các tài nguyên AWS của bạn, giúp bạn quản lý và giám sát hạ tầngcủa mình
- Hỗ trợ đa khu vực: AWS CloudFormation hỗ trợ triển khai tài nguyên
AWS trên nhiều khu vực, giúp bạn tăng tính sẵn sàng và độ tin cậy của hạtầng của mình
2.6.4 Glue
Trang 35AWS Glue là một dịch vụ quản lý trích xuất, chuyển đổi và tải (ETL) dữ liệuđược quản lý, giúp việc di chuyển dữ liệu giữa các kho lưu trữ trở nên dễ dànghơn Với AWS Glue, có thể tạo và chạy các công việc ETL để trích xuất dữ liệu từcác nguồn khác nhau, chuyển đổi dữ liệu theo các quy tắc kinh doanh và tải vàomột kho lưu trữ dữ liệu mục tiêu.
AWS Glue hỗ trợ nhiều nguồn dữ liệu khác nhau, bao gồm S3, RDS, Redshift
và các nguồn khác tương thích với JDBC Sử dụng Glue để chuyển đổi và chuẩn
bị cho phân tích, học máy và các ứng dụng thượng dòng khác
AWS Glue là một công cụ mạnh mẽ để quản lý và xử lý lượng lớn dữ liệu trênnhiều nguồn và định dạng dữ liệu khác nhau 1 cách linh hoạt, có khả năng mởrộng và tiết kiệm chi phí
2.6.5 Lambda
AWS Lambda là một dịch vụ điện toán phi máy chủ, theo định hướng sự kiện,giúp bạn chạy mã cho hầu hết mọi loại ứng dụng hoặc dịch vụ backend mà khôngcần cung cấp hay quản lý máy chủ Bạn có thể kích hoạt Lambda từ hơn 200 dịch
vụ AWS và các ứng dụng phần mềm dưới dạng dịch vụ (SaaS), đồng thời bạn chỉphải trả tiền theo mức sử dụng