Spark sql là gì

Mục lục [Hiện]

  1. Apache Spark là gì?
  2. Các thành phần cơ bản của Spark
    1. Spark Core
    2. Spark SQL
    3. Spark Streaming
    4. MLlib
    5. GrapX
  3. Ưu điểm nổi bật của Apache Spark là gì?

Apache spark đang là một thuật ngữ nhận được nhiều sự quan tâm và chú ý của rất nhiều doanh nghiệp trong việc ứng dụng công nghệ để phân tích và xử lý các dữ liệu nhanh chóng.

Tuy nhiên, đối với những người mới bắt đầu tìm hiểu về apache spark việc tìm kiếm một nguồn thông tin đáng tin cậy là điều vô cùng quan trọng.

Vì vậy, trong bài viết này, Bizfly sẽ mang đến cho bạn đầy đủ và chi tiết nhất định nghĩa Apache Spark là gì? Những thành phần cơ bản và ưu điểm nổi bật nào của Apache Spark mà bạn nên biết đến.

Apache Spark là gì?

Apache spark là một framework mã nguồn mở tính toán cụm [open source cluster computing framework] được phát triển vào năm 2009 bởi AMPLap. Đến năm 2013, nó được trao lại cho Apache Software Foundation và tiếp tục phát triển cho đến ngày nay.

Apache Spark là gì?

Apache spark cho phép bạn xây dựng những mô hình dự đoán nhanh chóng với khả năng thực hiện tính toán cùng lúc trên một nhóm các máy tính hay trên toàn bộ các tập dữ liệu mà không cần thiết phải trích xuất các mẫu tính toán thử nghiệm. Tốc độ xử lý dữ liệu của Apache spark có được là do khả năng thực hiện các tính toán trên nhiều máy khác nhau cùng một lúc tại bộ nhớ trong [in-memories] hay hoàn toàn trên RAM.

Apache spark cho phép bạn có thể xử lý các dữ liệu theo thời gian thực. Nghĩa là nó có thể vừa nhận dữ liệu từ các nguồn dữ liệu khác nhau, vừa có thể thực hiện xử lý ngay những dữ liệu mà nó vừa nhận được một cách đồng thời.

Apache spark không có hệ thống file cho riêng mình. Nó sử dụng nhiều hệ thống file khác nhau như S3, Cassandra, HDFS,.. và hoàn toàn không phụ thuộc vào bất cứ hệ thống file nào nói trên.

Các thành phần cơ bản của Spark

Để giúp bạn có cái nhìn chi tiết hơn và hiểu hơn vềApache spark, Bizfly sẽ cung cấp đến bạn những thành phần cơ bản và quan trọng của Spark mà bạn không thể nào bỏ qua được.

Spark Core

Đây được xem là nền tảng và điều kiện cho sự vận hành của các thành phần còn lại của Apache spark. Lý do đơn giản bởi vì thành phần này đảm nhận vai trò thực hiện các công việc tính toán, xử lý trong bộ nhớ và tham chiếu các dữ liệu được lưu trữ tại các hệ thống lưu trữ ở bên ngoài.

Spark Corelàthành phần cơ bản của Spark

Spark SQL

Là thành phần cung cấp SchemaRDD [kiểu data abstraction mới] với mục đích hỗ trợ cho các kiểu dữ liệu cấu trúc structured data và dữ liệu nửa cấu trúc semi-structured data [dữ liệu có cấu trúc nhưng không đồng nhất và phụ thuộc vào nội dung của dữ liệu]. Thành phần này giúp thực hiện các thao tác trên các Dataframes bằng các ngôn ngữ như Java, scala hay python thông qua sự hỗ trợ của Domain-specific language [DSL] và SQL.

Spark Streaming

Mục đích sử dụng của thành phần này chính là coi stream là các mini batches và thực hiện các kỹ thuật RDD transformation với các dữ liệu này để phân tích stream. Điều này giúp việc xử lý stream và phát triển lambda architecture trở nên dễ dàng bằng cách tận dụng lại các đoạn code được viết để xử lý batch.

Tuy nhiên, trong việc xử lý dữ liệu thì điều này lại tạo ra độ trễ.

MLlib

Là một nền tảng học máy, Spark MLlib nhanh hơn gấp 9 lần so với phiên bản chạy trên Hadoop [theo so sánh của benchmark] nhờ kiến trúc phân tán dựa trên bộ nhớ.

MLlib cũng là một thành phần cơ bản củaApache Spark

GrapX

Đây là nền tảng xử lý các đồ thị dựa trên Spark. Nó cung cấp các API và được sử dụng để diễn tả tất cả các tính toán có trong đồ thị thông qua Pregel Api.

Theo thống kê, tại các thư viện mà Spark cung cấp thì người dùng Spark SQL là 69%, người sử dụng Dataframes là khoảng 62% và 58% người sử dụng Spark Streaming và MLlib + GraphX.

Ưu điểm nổi bật của Apache Spark là gì?

Bên cạnh những thành phần mang nhiều tính năng hữu ích kể trên của Apache spark thì nó còn có những ưu điểm, lợi ích nổi bật cho những ai sử dụng Apache spark:

Ưu điểm nổi bật của Apache Spark là gì?

Apache spark tuy là một khái niệm mới nhưng tiềm năng phát triển trong tương lai là rất lớn, nhất là trong lĩnh vực IT với các công nghệ cốt lõi.

Trên đây là bài viết giới thiệu khái quát nhất về Apache spark giúp bạn có thể hiểu rõ được Apache spark là gì, những thành phần và lợi ích mà nó mang lại khi bạn lựa chọn sử dụng cho công việc IT của mình. Hy vọng, bạn có thể tìm kiếm được những thông tin hữu ích có trong bài viết.

Trong loạt tutorials này, chúng ta sẽ làm quen với việc sử dụng Spark SQL, Dataset và DataFrames. SparkSQL chính là một trong năm thành phần chính của Spark được phát triển cho việc sử lý dữ liệu có cấu trúc [structured data processing]. Chúng ta có thể tương tác với SparkSQL thông qua SQL, DataFrames API hoặc Datasets API. Để nắm được khái niệm DataFrames  và Datasets  trong Spark, trước hết chúng ta cần tìm hiểu về RDD [Resilient Distributed Datasets].

RDD là cấu trúc dữ liệu nền tảng của Spark, được sử dụng để phát triển Spark từ khi dự án này mới được ra đời. Resilient ở đây có thể hiểu là khả năng khôi phục dữ liệu khi dữ liệu xảy ra lỗi hoặc bị mất dữ liệu trong quá trình sử dụng. Distributed có nghĩa là các phần tử và các đối tượng [objects] trong Spark là không thể thay đổi [immutable] và được phân tán ra nhiều nodes khác nhau trong một cluster. Chính thuộc tính này của RDD cho phép Spark có thể thực hiện các thuật toán và tiến hành xử lý một cách song song, qua đó giúp tăng tốc độ và hiệu suất của hệ thống.

DataFrame là một API bậc cao hơn RDD được Spark giới thiệu vào năm 2013 [từ Apache Spark 1.3]. Tương tự như RDD, dữ liệu trong DataFrame cũng được quản lý theo kiểu phân tán và không thể thay đổi [immutable distributed]. Tuy nhiên dữ liệu này được sắp sếp theo các cột, tương tự như trong Relation Database. DataFrame được phát triển để giúp người dùng có thể dễ dàng thực hiện các thao tác xử lý dữ liệu cũng như làm tăng đáng kể hiệu quả sử lý của hệ thống.

Khi sử dụng DataFrame API, chúng ta gọi các hàm để trích xuất kết quả mong muốn và Spark sẽ tự động tiến hành các thuật toán xử lý. Tuy nhiên ở bước cuối cùng thì các thuật toán này vẫn được chạy trên RDD mặc dù người dùng chỉ tương tác với DataFrame. Bên cạnh các ưu điểm, thì nhược điểm lớn nhất của DataFrame là API này không hỗ trợ Compile-time type safety, do đó chúng ta khó có thể tiến hành thao tác trên dữ liệu. Ví dụ như khi chúng ta dùng DataFrame để truy xuất people[“age”], kết quả trả về không phải ở dạng Int mà ở dạng Column object. Vì vậy chúng ta không thể thực hiện các thao tác với kết quả này như đối với một Int object. Việc không hỗ trợ type safefy này làm người dùng không thể phát huy lợi thế của type system mà các ngôn ngữ lập trình như Scala, Java,.. hỗ trợ. Ngoài ra, nó còn làm tăng các lỗi runtime mà đáng ra đã được phát hiện tại compile time.

Để khắc phục nhược điểm của DataFrame , Spark đã phát triển và đưa vào sử dụng Datasets API từ năm 2015 [Apache Spark 1.6]. Mục tiêu chính của Datasets API là nhằm kết hợp các ưu điểm của cả RDD và DataFrame. Khác với RDD [sử dụng Java serialization], Dataset sử dụng Encoder để serialize các objects [Serialization là quá trình chuyển một Object thành một dãy byte để tiến hành các thao tác xử lý hoặc để truyền Object qua mạng. De-serialization là quá trình ngược lại đẻ chuyển hóa một dãy byte thành một Object]. Cơ chế làm việc của Encoder Serialization cho phép Spark có thể thực hiện nhiều thao tác [như filtering, sorting, hashing,…] mà không cần phải thực hiện De-serialization như các cơ chế Serialization thông thường. Kể từ Spark 2.0 thì DataFrame và Dataset được hợp nhất thành một và DataFrame là một type alias của DataSet[Row] [Row ở đây chính là một untyped object]. Dataset với định nghĩa Dataset[T] là tập hợp của các strongly-typed objects với ‘T’ là một typed object.

Bảng dưới đây liệt kê Typed [Dataset] và Un-typed[DataFrame] API của Spark theo từng ngôn ngữ lập trình [Lưu ý: trong Scala API thì DataFrame là một type alias của Dataset[Row] nhưng trong JavaAPI chúng ta cần phải dùng Dataset[Row] để biểu thị DataFrame. Python và R là hai ngôn ngữ không hỗ trợ Compile-time type safety nên ta chỉ có untyped API [DataFrame] mà không có typed API [Dataset] ].

Tháng Mười Một 19, 2018

ITechSeeker

Video liên quan

Chủ Đề