Tôi có thể sử dụng Dask thay vì Apache Spark trong tình huống nào? [đóng cửa]


81

Tôi hiện đang sử dụng Pandas và Spark để phân tích dữ liệu. Tôi thấy Dask cung cấp mảng NumPy và Pandas DataFrame song song.

Pandas rất dễ dàng và trực quan để thực hiện phân tích dữ liệu bằng Python. Nhưng tôi gặp khó khăn trong việc xử lý nhiều khung dữ liệu lớn hơn trong Pandas do bộ nhớ hệ thống hạn chế.

Câu trả lời đơn giản:

Apache Spark là một khuôn khổ bao gồm tất cả kết hợp điện toán phân tán, truy vấn SQL, học máy, v.v. chạy trên JVM và thường được đồng triển khai với các khuôn khổ Dữ liệu lớn khác như Hadoop. ... Nói chung Dask nhỏ hơn và trọng lượng nhẹ hơn Spark.

Tôi biết chi tiết bên dưới từ http://dask.pydata.org/en/latest/spark.html

  • Dask có trọng lượng nhẹ
  • Dask thường được sử dụng trên một máy duy nhất, nhưng cũng chạy tốt trên một cụm phân tán.
  • Dask cung cấp các mảng song song, khung dữ liệu, máy học và thuật toán tùy chỉnh
  • Dask có lợi thế hơn đối với người dùng Python vì bản thân nó là một thư viện Python nên việc tuần tự hóa và gỡ lỗi khi có sự cố diễn ra suôn sẻ hơn.
  • Dask đưa ra sự hiểu biết cấp cao để cho phép người dùng diễn đạt các thuật toán song song phức tạp hơn.
  • Dask có trọng lượng nhẹ hơn và dễ dàng tích hợp vào mã và phần cứng hiện có hơn.
  • Nếu bạn muốn một dự án duy nhất làm được mọi thứ và bạn đã sử dụng phần cứng Dữ liệu lớn thì Spark là một lựa chọn an toàn
  • Spark thường được sử dụng trên cụm có kích thước vừa và nhỏ nhưng cũng chạy tốt trên một máy duy nhất.

Tôi hiểu thêm nhiều điều về Dask từ liên kết dưới đây https://www.continuum.io/blog/developer-blog/high-performance-hadoop-anaconda-and-dask-your-cluster

  • Nếu bạn đang gặp vấn đề về bộ nhớ, giới hạn lưu trữ hoặc ranh giới CPU trên một máy khi sử dụng Pandas, NumPy hoặc các tính toán khác với Python, Dask có thể giúp bạn mở rộng quy mô trên tất cả các lõi trên một máy hoặc mở rộng quy mô trên tất cả các lõi và bộ nhớ trong cụm của bạn.
  • Dask hoạt động tốt trên một máy duy nhất để tận dụng tất cả các lõi trên máy tính xách tay của bạn và xử lý dữ liệu lớn hơn bộ nhớ
  • mở rộng quy mô một cách bền bỉ và đàn hồi trên các cụm với hàng trăm nút.
  • Dask hoạt động nguyên bản từ Python với dữ liệu ở các định dạng và hệ thống lưu trữ khác nhau, bao gồm Hệ thống tệp phân tán Hadoop (HDFS) và Amazon S3. Anaconda và Dask có thể hoạt động với bản phân phối Hadoop doanh nghiệp hiện có của bạn, bao gồm Cloudera CDH và Hortonworks HDP.

http://dask.pydata.org/en/latest/dataframe-overview.html

Hạn chế

Dask.DataFrame không triển khai toàn bộ giao diện Pandas. Người dùng mong đợi điều này sẽ thất vọng. Đáng chú ý, dask.dataframe có những hạn chế sau:

  1. Đặt một chỉ mục mới từ một cột chưa được sắp xếp rất tốn kém
  2. Nhiều hoạt động, như áp dụng theo nhóm và nối trên các cột không được sắp xếp yêu cầu thiết lập chỉ mục, như đã đề cập ở trên, rất tốn kém
  3. API Pandas rất lớn. Dask.dataframe không cố gắng triển khai nhiều tính năng của gấu trúc hoặc bất kỳ cấu trúc dữ liệu kỳ lạ nào như NDFrames

Cảm ơn các nhà phát triển Dask. Nó có vẻ như là một công nghệ rất hứa hẹn.

Nhìn chung, tôi có thể hiểu Dask đơn giản hơn để sử dụng so với spark. Dask linh hoạt như Gấu trúc với nhiều sức mạnh hơn để tính toán song song với nhiều cpu hơn.

Tôi hiểu tất cả những điều trên về Dask.

Vì vậy, khoảng bao nhiêu lượng dữ liệu (tính bằng terabyte) có thể được xử lý với Dask?


Câu hỏi này là rất rộng
MRocklin

1
Chỉ xem xét kích thước dữ liệu là không đủ để lựa chọn các công cụ / chiến lược song song tốt nhất. Cách thuật toán xử lý dữ liệu cần được tính đến. Tôi đã không thử cả hai nhưng có lẽ sẽ thử dask trên một máy tính như máy tính xách tay hoặc máy tính. Và sẽ xem xét triển khai để khởi động khi có nhu cầu chạy với cụm đa nút. Vì nó trông rất phức tạp để tìm hiểu và điều chỉnh từng thành phần với khuôn khổ đi kèm với tia lửa.
ReneWang

Bạn có thể tìm thấy một câu trả lời ở đây: medium.com/datadriveninvestor/...
tom

Câu trả lời:


40

bạn có thể muốn đọc so sánh Dask với Apache Spark

Apache Spark là một khuôn khổ bao gồm tất cả kết hợp điện toán phân tán, truy vấn SQL, học máy, v.v. chạy trên JVM và thường được đồng triển khai với các khuôn khổ Dữ liệu lớn khác như Hadoop. Ban đầu nó được tối ưu hóa cho việc nhập và truy vấn dữ liệu hàng loạt phổ biến trong kỹ thuật dữ liệu và phân tích kinh doanh nhưng sau đó đã được mở rộng ra. Spark thường được sử dụng trên cụm có kích thước vừa và nhỏ nhưng cũng chạy tốt trên một máy duy nhất.

Dask là một thư viện lập trình song song kết hợp với hệ sinh thái Numeric Python để cung cấp các mảng song song, khung dữ liệu, học máy và các thuật toán tùy chỉnh. Nó dựa trên Python và ngăn xếp C / Fortran nền tảng. Dask ban đầu được thiết kế để bổ sung cho các thư viện khác với tính năng song song, đặc biệt cho tính toán số và phân tích nâng cao, nhưng sau đó đã được mở rộng ra. Dask thường được sử dụng trên một máy duy nhất, nhưng cũng chạy tốt trên một cụm phân tán.

Nói chung Dask nhỏ hơn và trọng lượng nhẹ hơn Spark. Điều này có nghĩa là nó có ít tính năng hơn và thay vào đó là nhằm mục đích sử dụng cùng với các thư viện khác, đặc biệt là các thư viện trong hệ sinh thái Python số.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.