- vừa được xem lúc

Giới Thiệu về Apache Spark

0 0 8

Người đăng: Hà Thanh Bình

Theo Viblo Asia

Định nghĩa Spark Dataframes

Spark Dataframes là các bộ thu thập dữ liệu phân tán được sắp xếp thành các columns, tương tự như bảng trong cơ sở dữ liệu quan hệ (Relational database) hoặc bảng tính. Chúng là một phần của Apache Spark framework và cung cấp API hiệu suất hơn RDDs - Resilient Distributed Datasets (bộ dữ liệu phân tán linh hoạt ), giúp thực hiện các hoạt động phức tạp như filtering, aggregating, and joining dữ liệu.

Dataframes được thiết kế để hỗ trợ cả dữ liệu có cấu trúc và bán cấu trúc (Structured & Semi-Structured), đồng thời tối ưu hóa cao cho xử lý phân tán, giúp chúng hoạt động hiệu quả đối với các tác vụ phân tích dữ liệu lớn.

Hoạt Động và Kiến Trúc

Hoạt động

  • Spark DataFrames hoạt động dựa trên khái niệm đánh giá lười biếng (lazy evaluation). Điều này có nghĩa là các phép biến đổi trên DataFrame không được thực thi ngay lập tức mà thay vào đó được khi lại dưới dạng một loạt các phép biến đổi sẽ được áp dụng sau này.

  • Khi một hành động dduocj gọi (ví dụ show(), collect()), các phép biến đổi được thực thi theo cách phân tán trên toàn cụm.

Kiến trúc

  • Spark Dataframe tận dụng kiến trúc cơ bản của Spark, bao gồm trình quản lý cụm (chẳng hạn như Apache YARN hoặc Apache Mesos), hệ thống lưu trữ phân tán (chẳng hạn như HDFS) và công cụ xử lý phân tán (Spark Core).

  • DataFrames được phân phối trên cụm và được xử lý song song, với mỗi bộ thực thi hoạt động trên một phân vùng dữ liệu.

image.png

Tính ứng dụng của Spark Dataframes

Spark Dataframes cung cấp một số ưu điểm khiến chúng trở thành lựa chọn ưu tiên để xử lý dữ liệu lớn

  1. Dễ sử dụng

    • Dataframes cung cấp mức độ trừu tượng cao hơn so với RDD, giúp nhà phát triển viết và duy trì mã dễ dàng hơn. Họ cung cấp một API quen thuộc tương tự như làm việc với các dataframes bằng các ngôn ngữ như Python (Pandas) và R, giúp giảm thời gian học tập cho người dùng.
  2. Hiệu suất

    • Dataframes được tối ưu hóa cao cho các xử lý phân tán, tận dụng các kỹ thuật như tối ưu hóa truy vấn (query optimiztion), đẩy xuống vị từ (predicate pushdown), và bộ nhớ đệm (in-memory caching) để đạt được hiệu suất cao. Chúng mang lại hiệu suất tốt hơn các MapReduce frameworks.
  3. Đa dạng chức năng

    • Dataframes cung cấp nhiều chức năng tích hợp để data manipulation, aggregation, filtering, and joining, cho phép thực hiện các tác vụ xử lý dữ liệu phức tạp với ít dòng code. Chúng cũng hỗ trợ các truy vấn SQL, cho phép người dùng thể hiện các phép biến đổi dữ liệu bằng cú pháp SQL.
  4. Khả năng tương tác

    • Dataframes tích hợp liền mạch với nhiều nguồn và định dạng dữ liệu khác nhau, bao gồm JSON, CSV, Parquet, Avro và cơ sở dữ liệu, cho phép quy trình xử lý dữ liệu thống nhất. Họ cũng có thể tích hợp với các thư viện và các frameworks khác như Apache Hadoop, Apache Hive, và Apache Kafka.
  5. Unified API

    • Spark Dataframes cung cấp API hợp nhất để xử lý dữ liệu hàng loạt và truyền phát dữ liệu, cho phép người dùng xây dựng đường dẫn dữ liệu (data piplines) từ đầu đến cuối bằng một framework duy nhất. Điều này giúp đơn giản hóa các nỗ lực phát triển và bảo trì, đồng thời cho phép các tổ chức tận dụng cùng một cơ sở mã cho cả phân tích hàng loạt và thời gian thực.
    • So với các công nghệ xử lý dữ liệu lớn khác như Apache Hadoop MapReduce, Spark Dataframes cung cấp khả năng trừu tượng hóa ở cấp độ cao hơn, hiệu suất tốt hơn và chức năng phong phú hơn, khiến chúng trở thành lựa chọn hiệu quả hơn để phát triển
    • So với cơ sở dữ liệu và kho dữ liệu truyền thống, Spark Dataframe cung cấp khả năng mở rộng và khả năng chịu lỗi, cho phép chúng xử lý khối lượng dữ liệu lớn và chạy trên phần cứng thông thường.

Ví dụ Minh Họa

Giả sử chúng tôi có tập dữ liệu chứa thông tin về giao dịch bán hàng và chúng tôi muốn thực hiện một số tác vụ thao tác dữ liệu phổ biến bằng Spark DataFrames:

1. Loafing Data

from pyspark.sql import SparkSession # Create a SparkSession 
spark = SparkSession.builder\ .appName("SalesAnalysis")\ .getOrCreate() # Load data into a DataFrame 
sales_df = spark.read.csv("sales_data.csv", header=True, inferSchema=True) 

2. Data Exploration

Chúng ta có thể khám phá dữ liệu bằng cách hiển thị lược đồ và một số hàng đầu tiên

 # Display schema 
sales_df.printSchema() # Display first few rows 
sales_df.show(5) 

3. Filtering Data

Chúng ta có thể lọc DataFrame để chỉ chọn những hàng có số tiền lớn hơn 1000 USD

# Filter data 
high_sales_df = sales_df.filter(sales_df["sales_amount"] > 1000) 

4. Aggregation

Tính tổng số tiền bán được cho từng loại sản phẩm.

from pyspark.sql.functions import sum # Aggregate data 
sales_by_category_df = sales_df.groupBy("product_category")\ .agg(sum("sales_amount")\ .alias("total_sales_amount")) 

5. Joining Data

Chúng ta có thể nối dữ liệu bán hàng với một DataFrame khác chứa thông tin về danh mục sản phẩm.

# Load product categories data 
categories_df = spark.read.csv("product_categories.csv", header=True, inferSchema=True) # Join data 
joined_df = sales_df.join(categories_df, "product_category", "left") 

6. Writing Data

Cuối cùng chúng ta có thể ghi dữ liệu đã xử lý trở lại tệp hoặc lưu vào cơ sở dữ liệu

# Write data to a CSV file 
joined_df.write.csv("processed_sales_data.csv", header=True) 

Các ví dụ này chỉ ra cách Spark DataFrames cung cấp API thuận tiện và chính xác để thực hiện các tác vụ thao tác dữ liệu phổ biến nhủ Loading, exploring, filtering, aggregating, joining, and writing data. Mã này ngắn gọi dễ hiểu, phù hợp với các tác vụ xử lý dữ liêu quy mô lớn.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Cài đặt Apache Spark cho Ubuntu

Apache Spark là một framework dùng trong xử lý dữ liệu lớn. Nền tảng này trở nên phổ biến rộng rãi do dễ sử dụng và tốc độ xử lý dữ liệu được cải thiện hơn Hadoop.

0 0 41

- vừa được xem lúc

Đọc dữ liệu từ một file text và ghi lại dưới dạng file parquet trên HDFS sử dụng Spark (Phần 2)

Các bạn chưa đọc phần 1 thì có thể đọc tại đây nha : Đọc dữ liệu từ một file text và ghi lại dưới dạng file parquet trên HDFS sử dụng Spark (Phần 1). Ghi dữ liệu ra file parquet sử dụng Spark.

0 0 50

- vừa được xem lúc

Đọc dữ liệu từ một file text và ghi lại dưới dạng file parquet trên HDFS sử dụng Spark (Phần 1)

Định dạng text là một định dạng vô cùng phổ biến cả trên HDFS hay bất cứ đâu. Dữ liệu file text được trình bày thành từng dòng, mỗi dòng có thể coi như một bản ghi và đánh dấu kết thúc bằng kí tự "" (

0 0 37

- vừa được xem lúc

Tổng quan về Apache Spark cho hệ thống Big Data

Apache Spark in-memory clusters đang là sự chú ý của nhiều doanh nghiệp trong việc ứng dụng công nghệ vào phân tích và xử lý dữ liệu nhanh chóng. Bài viết này tôi sẽ trình bày một cách tổng quan nhất

0 0 164

- vừa được xem lúc

Tổng hợp bài viết giới thiệu về Hadoop và Spark thông qua khái niệm cơ bản và thực hành

Hadoop. Hadoop là framework dựa trên 1 giải pháp tới từ Google để lưu trữ và xử lý dữ liệu lớn.

0 0 232

- vừa được xem lúc

Spark - Distributed ML model with Pandas UDFs

Hình ảnh mình mượn tại đây nhé Cat&Doc. Why.

0 0 32