파이썬이 빅 데이터에 적합합니까?


14

이 글에서 읽은 것은 빅 데이터가 구성하는 빅 데이터에 적합한 R 언어5TB 이며, 이러한 유형의 데이터로 작업 할 가능성에 대한 정보를 제공하는 것은 훌륭 R하지만 정보는 거의 제공하지 않습니다 Python. Python이 많은 데이터로도 작업 할 수 있는지 궁금합니다 .

답변:


18

명확히하기 위해 OP의 원래 질문 참조가 SO 유형 형식에 가장 적합하지 않은 것 같지만 python이 경우에는 분명히 대표 할 것 입니다.

데이터 크기에 관계없이 python제한 요인이되어서는 안된다는 것부터 시작하겠습니다 . 실제로, 큰 데이터 세트를 처리 할 때 몇 가지 주요 문제가 있습니다.

  • 메모리로 데이터 읽기 -이는 빅 데이터 세계에서 가장 흔하게 발생하는 문제입니다. 기본적으로 메모리 (RAM)보다 많은 데이터를 읽을 수 없습니다. 이 문제를 해결하는 가장 좋은 방법은 모든 것을 한 번에 읽지 않고 데이터를 원 자성으로 만드는 것입니다.
  • 데이터 저장 -이것은 실제로 이전 문제의 또 다른 형태 일뿐입니다.에 대해 이야기 1TB할 때까지 다른 곳에서 저장소를 찾아야합니다. AWS S3는 가장 일반적인 리소스이며 대량의 데이터를 처리 할 수 python있는 환상적인 boto라이브러리를 갖추고 있습니다.
  • 네트워크 대기 시간 -서로 다른 서비스간에 데이터를 이동하면 병목 현상이 발생합니다. 함께 배치 된 리소스를 선택하고 벽에 꽂는 것 외에는이 문제를 해결하기 위해 할 수있는 많은 양이 없습니다.

13

빅 데이터를 다룰 때 이해해야 할 것이 몇 가지 있습니다.

빅 데이터 란?

볼륨, 속도, 버라이어티 등 유명한 빅 데이터 V를 알고있을 수도 있습니다. 따라서 파이썬은 모든 사람에게 적합하지 않을 수 있습니다. 사용 가능한 모든 데이터 과학 도구와 함께 제공됩니다. 어떤 도구가 어떤 목적에 적합한 지 알아야합니다.

많은 양의 데이터를 처리하는 경우 :

  • 돼지 / 하이브 / 상어-데이터 정리 및 ETL 작업
  • 하둡 / 스파크-분산 병렬 컴퓨팅
  • Mahout / ML-Lib-기계 학습

이제 중간 단계에서 R / Python을 사용할 수 있지만 전체 프로세스에서 병목 현상이 발생한다는 것을 알게 될 것입니다.

데이터 속도를 처리하는 경우 :

  • Kafka / Storm-고 처리량 시스템

사람들은 여기서 R / Python을 시도하지만 다시 한 번 원하는 병렬 처리와 모델 복잡성에 달려 있습니다.

어떤 종류의 분석을 원하십니까?

모델이 전체 데이터를 먼저 메모리로 가져 오도록 요구하는 경우 중간 데이터가 크면 코드가 손상되므로 모델이 복잡하지 않아야합니다. 그리고 디스크에 쓰기를 원한다면 RAM에 비해 디스크 읽기 / 쓰기가 느리기 때문에 추가 지연이 발생합니다.

결론

빅 데이터 공간에서 파이썬을 확실히 사용할 수 있습니다 (물론 사람들이 R을 사용하려고 시도하기 때문에 파이썬은 아닙니다) 데이터와 비즈니스 요구 사항을 먼저 알고 있습니다. 더 나은 도구를 사용할 수 있으며 항상 다음을 기억하십시오.

도구는 질문에 대한 답변 방법을 결정하지 않아야합니다. 질문에 따라 사용하는 도구가 결정됩니다.


8

파이썬에는 빅 데이터 작업을위한 매우 유용한 도구가 있습니다.

numpy

Numpy의 메모리 매핑 된 배열을 사용하면 마치 디스크에 저장된 파일을 배열 인 것처럼 액세스 할 수 있습니다. 현재 작업중인 어레이의 부분 만 메모리에로드해야합니다. 일반 배열과 거의 동일하게 사용할 수 있습니다.

h5py와 pytables

이 두 라이브러리는 HDF5 파일에 대한 액세스를 제공합니다. 이 파일을 사용하면 데이터의 일부에만 액세스 할 수 있습니다. 또한 데이터에 액세스하는 데 사용되는 기본 라이브러리 덕분에 파이썬 데이터 구조에 데이터를로드하지 않고도 많은 수학 연산 및 기타 데이터 조작을 수행 할 수 있습니다. 5TB보다 훨씬 큰 대규모의 구조화 된 파일이 가능합니다. 또한 원활하고 무손실 압축이 가능합니다.

데이터베이스

빅 데이터 세트를 저장하고 필요한 부분 만로드 할 수있는 다양한 유형의 데이터베이스가 있습니다. 많은 데이터베이스를 사용하면 파이썬 데이터 구조에 데이터를 전혀로드하지 않고도 조작 할 수 있습니다.

팬더

이를 통해 HDF5 데이터, CSV 파일, 데이터베이스 및 웹 사이트를 포함한 다양한 유형의 데이터에 더 높은 수준으로 액세스 할 수 있습니다. 빅 데이터의 경우 HDF5 파일 액세스에 대한 래퍼를 제공하여 빅 데이터 세트를보다 쉽게 ​​분석 할 수 있습니다.

mpi4py

이것은 여러 프로세서 또는 여러 컴퓨터에 분산 된 방식으로 파이썬 코드를 실행하기위한 도구입니다. 이를 통해 데이터의 일부를 동시에 작업 할 수 있습니다.

황혼

메모리에 맞지 않을 정도로 큰 데이터를 처리 할 수있는 멀티 코어 방식으로 많은 일반 numpy 연산을 지원하는 일반 numpy 배열 버전을 제공합니다.

불꽃

빅 데이터를 위해 특별히 설계된 도구입니다. 기본적으로 위의 라이브러리를 감싸는 래퍼로, 대량의 데이터 (예 : HDF5 또는 데이터베이스)를 저장하는 다양한 방법에 대한 일관된 인터페이스와 데이터를 쉽게 조작, 수학 연산 및 분석 할 수있는 도구 너무 커서 메모리에 맞지 않습니다.


4

물론. 그 규모의 데이터로 작업 할 때 빅 데이터 프레임 워크를 사용하는 것이 일반적입니다.이 경우 파이썬 또는 사용중인 언어는 인터페이스 일뿐입니다. 예를 들어 Spark의 Python Programming Guide를 참조하십시오 . 어떤 종류의 데이터가 있고 어떤 데이터를 가지고 하시겠습니까?


3

이러한 양의 데이터를 처리하기 위해 프로그래밍 언어는 주요 관심사가 아니라 프로그래밍 프레임 워크입니다. MapReduce 또는 Spark와 같은 프레임 워크에는 Python을 비롯한 여러 언어에 바인딩되어 있습니다. 이러한 프레임 워크에는 데이터 분석 작업을위한 즉시 사용 가능한 많은 패키지가 있습니다. 그러나 결국 모든 것이 당신의 요구 사항, 즉 당신의 임무는 무엇입니까? 사람들은 데이터 분석 작업에 대해 서로 다른 정의를 가지고 있으며, 일부는 관계형 데이터베이스로 쉽게 해결할 수 있습니다. 이 경우 SQL은 다른 모든 대안보다 훨씬 낫습니다.


2

언어 자체는 큰 데이터와 관련하여 성능 기능과 관련이 거의 없다고 생각합니다. 중요한 것은 :

  • 데이터가 실제로 얼마나 큽니까
  • 어떤 처리를 하시겠습니까?
  • 어떤 하드웨어를 사용 하시겠습니까
  • 사용할 특정 라이브러리는 무엇입니까

어쨌든, 파이썬은 데이터 과학 커뮤니티에서 잘 채택되었습니다.


2

Anaconda Python 3.4 및 Pandas를 사용하여 20K의 로그인 자격 증명과 일치하도록 10M 행 데이터베이스를 검색했습니다. 약 1 분 정도 걸립니다. 팬더 내부는 메모리를 많이 사용합니다. 즉, 진정한 빅 데이터에는 문제와 일치하는 처리 아키텍처가 필요합니다. 팬더는이 방정식의 접착제 (논리) 일뿐이며 다른 도구 도이 작업을 수행 할 수 있습니다. R, Scala, Haskell, SAS 등은 일부 논리를 복제 할 수 있습니다. 아마도 질문에 더 빨리 답할 수있을 것입니다. 그러나 파이썬은 좋은 (최상의?) 범용 도구를 만듭니다. 파이썬과 다른 언어로 R 코드를 실행할 수 있습니다. 해석 적이지만, pypy와 같은 고성능 기술과 도구는 약간의 노력만으로도 파이썬을 벤치 마크 도구만큼 빠르게 실행할 수 있습니다. 그리고 파이썬에는 모든 것에 관한 많은 라이브러리가 있습니다-위의 목록을 참조하십시오.

파이썬을 배우고 사용 해야하는지 묻는다면 제 대답은 '예'입니다. 그러나 하나의 도구로 해결되는 데이터 과학 문제는 거의 없습니다. 그것은 당신의 도구가 될 수 있지만 그것의 유일한 도구입니다. 제정신이없는 사람이 망치로 집을 짓지 않는 것처럼, 제정신 데이터 과학자는 단 하나의 도구 만 사용합니다.


0

사람들이 빅 데이터를 데이터 과학 및 비즈니스 인텔리전스와 어떻게 혼합하는지는 재미 있습니다.

첫째, 빅 데이터는 "많은 데이터"를 의미하므로 기존 데이터베이스에는 맞지 않는 정보가 많습니다. 그러나 때때로 빅 데이터는 적절한 "가치"정보가 아니라 문서, 이미지 등입니다.

따라서 빅 데이터를 처리하려면 속도가 필요합니다. 파이썬은 리그를 벗어 났으므로 R입니다. 그러나 CSV를 가져 와서 데이터베이스에 삽입하는 것만 큼 쉬운 작업이라면 ETL이므로 프로그래밍 할 필요가 없습니다.

그리고 정보가 줄어들면 파이썬, r 또는 원하는 것을 적용 할 수 있습니다. Excel조차도. 그러나이 단계에서 빅 데이터는 더 이상 크지 않고 기존 데이터입니다.

IMHO, Java는 빅 데이터 (전체 체인)에 더 적합하지만 사람들은 실제적이지 않은 이유로 파이썬을 기본값으로 사용합니다.

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