어떤 상황에서 Apache Spark 대신 Dask를 사용할 수 있습니까? [닫은]


81

현재 데이터 분석을 위해 Pandas와 Spark를 사용하고 있습니다. Dask는 병렬화 된 NumPy 배열과 Pandas DataFrame을 제공합니다.

Pandas는 Python에서 데이터 분석을 수행하는 데 쉽고 직관적입니다. 그러나 제한된 시스템 메모리로 인해 Pandas에서 여러 개의 더 큰 데이터 프레임을 처리하는 데 어려움이 있습니다.

간단한 답변 :

Apache Spark는 분산 컴퓨팅, SQL 쿼리, 머신 러닝 등을 결합한 포괄적 인 프레임 워크로 JVM에서 실행되며 일반적으로 Hadoop과 같은 다른 빅 데이터 프레임 워크와 함께 배포됩니다. ... 일반적으로 Dask는 Spark보다 작고 가볍습니다.

http://dask.pydata.org/en/latest/spark.html 에서 자세한 내용을 알 수 있습니다.

  • Dask는 경량입니다.
  • Dask는 일반적으로 단일 시스템에서 사용되지만 분산 클러스터에서도 잘 실행됩니다.
  • Dask는 병렬 배열, 데이터 프레임, 기계 학습 및 사용자 지정 알고리즘을 제공합니다.
  • Dask는 그 자체가 Python 라이브러리이기 때문에 Python 사용자에게 이점이 있으므로 일이 잘못되었을 때 직렬화 및 디버깅이 더 원활하게 이루어집니다.
  • Dask는 사용자가 더 복잡한 병렬 알고리즘을 표현할 수 있도록 높은 수준의 이해를 포기합니다.
  • Dask는 더 가볍고 기존 코드 및 하드웨어에 쉽게 통합 할 수 있습니다.
  • 모든 것을 수행하는 단일 프로젝트를 원하고 이미 빅 데이터 하드웨어를 사용하고 있다면 Spark가 안전한 선택입니다.
  • Spark는 일반적으로 중소 규모의 클러스터에서 사용되지만 단일 시스템에서도 잘 실행됩니다.

아래 링크 https://www.continuum.io/blog/developer-blog/high-performance-hadoop-anaconda-and-dask-your-cluster 에서 Dask에 대해 더 많은 것을 이해합니다.

  • Pandas, NumPy 또는 Python으로 기타 계산을 사용할 때 단일 컴퓨터에서 메모리 문제, 저장소 제한 또는 CPU 경계가 발생하는 경우 Dask를 사용하면 단일 컴퓨터의 모든 코어에서 확장하거나 확장 할 수 있습니다. 클러스터 전체의 모든 코어 및 메모리에서.
  • Dask는 단일 컴퓨터에서 잘 작동하여 랩톱의 모든 코어를 사용하고 메모리보다 큰 데이터를 처리합니다.
  • 수백 개의 노드가있는 클러스터에서 탄력적이고 탄력적으로 확장됩니다.
  • Dask는 기본적으로 Python에서 HDFS (Hadoop Distributed File System) 및 Amazon S3를 비롯한 다양한 형식 및 스토리지 시스템의 데이터로 작동합니다. Anaconda 및 Dask는 Cloudera CDH 및 Hortonworks HDP를 포함한 기존 엔터프라이즈 Hadoop 배포와 함께 작동 할 수 있습니다.

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

한계

Dask.DataFrame은 전체 Pandas 인터페이스를 구현하지 않습니다. 이를 기대하는 사용자는 실망 할 것입니다. 특히 dask.dataframe에는 다음과 같은 제한이 있습니다.

  1. 정렬되지 않은 열에서 새 인덱스를 설정하는 것은 비용이 많이 듭니다.
  2. groupby-apply 및 정렬되지 않은 열에 대한 조인과 같은 많은 작업에는 위에서 언급했듯이 비용이 많이 드는 인덱스 설정이 필요합니다.
  3. Pandas API는 매우 큽니다. Dask.dataframe은 많은 pandas 기능이나 NDFrames와 같은 더 이국적인 데이터 구조를 구현하려고 시도하지 않습니다.

Dask 개발자에게 감사합니다. 매우 유망한 기술처럼 보입니다.

전반적으로 Dask가 스파크보다 사용하기가 더 쉽다는 것을 이해할 수 있습니다. Dask는 더 많은 CPU의 병렬성으로 계산할 수있는 더 많은 파워를 가진 Pandas만큼 유연합니다.

나는 Dask에 대한 위의 모든 사실을 이해합니다.

그렇다면 Dask로 처리 할 수있는 데이터 양 (테라 바이트)은 대략 얼마입니까?


이 질문은 매우 광범위
MRocklin

1
데이터 크기만으로는 최상의 병렬 도구 / 전략을 선택하는 데 충분하지 않습니다. 알고리즘이 데이터를 처리하는 방법을 고려해야합니다. 나는 둘 다 시도하지 않았지만 아마도 랩톱이나 PC와 같은 단일 컴퓨터에서 dask를 시도 할 것입니다. 다중 노드 클러스터로 실행해야하는 경우 스파크 배포를 고려합니다. Spark와 함께 제공되는 프레임 워크로 각 구성 요소를 배우고 조정하는 것은 매우 복잡해 보입니다.
ReneWang

여기에서 답글을 찾을 수 있습니다 : medium.com/datadriveninvestor/…
tom

답변:


40

Apache Spark와 Dask 비교를 읽고 싶을 수 있습니다.

Apache Spark는 분산 컴퓨팅, SQL 쿼리, 머신 러닝 등을 결합한 포괄적 인 프레임 워크로 JVM에서 실행되며 일반적으로 Hadoop과 같은 다른 빅 데이터 프레임 워크와 함께 배포됩니다. 원래는 데이터 엔지니어링 및 비즈니스 분석에서 일반적인 대량 데이터 수집 및 쿼리에 최적화되었지만 그 이후로 확장되었습니다. Spark는 일반적으로 중소 규모의 클러스터에서 사용되지만 단일 시스템에서도 잘 실행됩니다.

Dask는 Numeric Python 에코 시스템과 결합하여 병렬 배열, 데이터 프레임, 기계 학습 및 사용자 지정 알고리즘을 제공하는 병렬 프로그래밍 라이브러리입니다. Python 및 기본 C / Fortran 스택을 기반으로합니다. Dask는 원래 병렬 처리, 특히 숫자 컴퓨팅 및 고급 분석을 위해 다른 라이브러리를 보완하도록 설계되었지만 그 이후로 확장되었습니다. Dask는 일반적으로 단일 시스템에서 사용되지만 분산 클러스터에서도 잘 실행됩니다.

일반적으로 Dask는 Spark보다 작고 가볍습니다. 즉, 기능이 더 적고 대신 다른 라이브러리, 특히 숫자 Python 에코 시스템의 라이브러리와 함께 사용하기위한 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.