Python có phù hợp với dữ liệu lớn không


13

Tôi đã đọc trong bài viết này Có phải ngôn ngữ R phù hợp với Dữ liệu lớn mà dữ liệu lớn tạo thành 5TBvà trong khi nó cung cấp thông tin tốt về tính khả thi khi làm việc với loại dữ liệu Rnày thì nó cung cấp rất ít thông tin Python. Tôi đã tự hỏi nếu Pythoncó thể làm việc với nhiều dữ liệu này là tốt.

Câu trả lời:


16

Để làm rõ, tôi cảm thấy như các tài liệu tham khảo câu hỏi ban đầu của OP có thể không phải là tốt nhất cho định dạng loại SO, nhưng tôi chắc chắn sẽ đại diện pythontrong trường hợp cụ thể này.

Hãy để tôi bắt đầu bằng cách nói rằng bất kể kích thước dữ liệu của bạn, pythonkhông nên là yếu tố giới hạn của bạn. Trên thực tế, chỉ có một vài vấn đề chính mà bạn sẽ gặp phải khi xử lý các bộ dữ liệu lớn:

  • Đọc dữ liệu vào bộ nhớ - Đây là vấn đề phổ biến nhất trong thế giới dữ liệu lớn. Về cơ bản, bạn không thể đọc nhiều dữ liệu hơn bộ nhớ (RAM). Cách tốt nhất để khắc phục điều này là bằng cách thực hiện các thao tác nguyên tử trên dữ liệu của bạn thay vì cố gắng đọc mọi thứ cùng một lúc.
  • Lưu trữ dữ liệu - Đây thực sự chỉ là một hình thức khác của vấn đề trước đó, đến lúc nhận được 1TB, bạn bắt đầu phải tìm nơi khác để lưu trữ. AWS S3 là tài nguyên phổ biến nhất và pythonbotothư viện tuyệt vời để tạo điều kiện dẫn đầu với các phần dữ liệu lớn.
  • Độ trễ mạng - Di chuyển dữ liệu giữa các dịch vụ khác nhau sẽ là nút cổ chai của bạn. Bạn không thể làm gì để khắc phục điều này, ngoài việc cố gắng chọn các tài nguyên cùng vị trí và cắm vào tường.

13

Có một số điều bạn cần hiểu khi xử lý Dữ liệu lớn -

Dữ liệu lớn là gì?

Bạn có thể biết về V's of Big data nổi tiếng - Khối lượng, Vận tốc, Sự đa dạng ... Vì vậy, Python có thể không phù hợp với tất cả. Và nó đi với tất cả các công cụ khoa học dữ liệu có sẵn. Bạn cần biết công cụ nào tốt cho mục đích gì.

Nếu xử lý khối lượng dữ liệu lớn:

  • Pig / Hive / Shark - Làm sạch dữ liệu và công việc ETL
  • Hadoop / Spark - Điện toán song song phân tán
  • Mahout / ML-Lib - Học máy

Bây giờ, bạn có thể sử dụng R / Python trong các giai đoạn trung gian nhưng bạn sẽ nhận ra rằng chúng trở thành nút cổ chai trong toàn bộ quá trình của bạn.

Nếu giao dịch với Vận tốc dữ liệu:

  • Kafka / Storm - Hệ thống thông lượng cao

Mọi người đang cố gắng R / Python ở đây nhưng một lần nữa nó phụ thuộc vào loại song song bạn muốn và độ phức tạp mô hình của bạn.

Những loại phân tích bạn muốn làm?

Nếu mô hình của bạn yêu cầu toàn bộ dữ liệu trước tiên được đưa vào bộ nhớ thì mô hình của bạn sẽ không phức tạp vì nếu dữ liệu trung gian lớn thì mã sẽ bị hỏng. Và nếu bạn nghĩ đến việc ghi nó vào đĩa thì bạn sẽ phải đối mặt với độ trễ bổ sung vì việc đọc / ghi đĩa chậm so với RAM.

Phần kết luận

Bạn chắc chắn có thể sử dụng Python trong không gian dữ liệu lớn (Chắc chắn, vì mọi người đang thử với R, tại sao không phải là Python) nhưng trước tiên phải biết dữ liệu và yêu cầu kinh doanh của bạn. Có thể có các công cụ tốt hơn có sẵn cho cùng và luôn nhớ:

Công cụ của bạn không nên xác định cách bạn trả lời câu hỏi. Câu hỏi của bạn nên xác định những công cụ bạn sử dụng.


8

Python có một số công cụ rất tốt để làm việc với dữ liệu lớn:

numpy

Các mảng được ánh xạ memmory của Numpy cho phép bạn truy cập một tệp được lưu trên đĩa như thể đó là một mảng. Chỉ các phần của mảng bạn đang tích cực làm việc cần phải được tải vào bộ nhớ. Nó có thể được sử dụng khá giống như một mảng thông thường.

h5py và pytables

Hai thư viện này cung cấp quyền truy cập vào các tệp HDF5. Những tập tin này cho phép truy cập vào một phần dữ liệu. Hơn nữa, nhờ các thư viện cơ bản được sử dụng để truy cập dữ liệu, nhiều thao tác toán học và các thao tác khác của dữ liệu có thể được thực hiện mà không cần tải nó vào cấu trúc dữ liệu python. Các tập tin lớn, có cấu trúc cao là có thể, lớn hơn nhiều so với 5 TB. Nó cũng cho phép nén liền mạch, không mất dữ liệu.

cơ sở dữ liệu

Có nhiều loại cơ sở dữ liệu cho phép bạn lưu trữ các tập dữ liệu lớn và chỉ tải các phần bạn cần. Nhiều cơ sở dữ liệu cho phép bạn thực hiện các thao tác mà không cần tải dữ liệu vào cấu trúc dữ liệu python.

gấu trúc

Điều này cho phép truy cập cấp cao hơn vào các loại dữ liệu khác nhau, bao gồm dữ liệu HDF5, tệp csv, cơ sở dữ liệu, thậm chí các trang web. Đối với dữ liệu lớn, nó cung cấp trình bao bọc xung quanh quyền truy cập tệp HDF5 giúp phân tích trên các tập dữ liệu lớn dễ dàng hơn.

mpi4py

Đây là một công cụ để chạy mã python của bạn theo cách phân tán trên nhiều bộ xử lý hoặc thậm chí nhiều máy tính. Điều này cho phép bạn làm việc trên các phần của dữ liệu của bạn đồng thời.

dask

Nó cung cấp một phiên bản của mảng numpy bình thường hỗ trợ nhiều hoạt động numpy bình thường theo cách đa lõi có thể hoạt động trên dữ liệu quá lớn để phù hợp với bộ nhớ.

ngọn lửa

Một công cụ được thiết kế đặc biệt cho dữ liệu lớn. Về cơ bản, nó là một trình bao bọc xung quanh các thư viện trên, cung cấp giao diện nhất quán cho nhiều phương pháp khác nhau để lưu trữ một lượng lớn dữ liệu (như HDF5 hoặc cơ sở dữ liệu) và các công cụ để dễ dàng thao tác, thực hiện các thao tác toán học và phân tích dữ liệu là quá lớn để phù hợp với bộ nhớ.


4

Chắc chắn rồi. Khi bạn làm việc với dữ liệu ở quy mô đó, việc sử dụng khung dữ liệu lớn, trong trường hợp đó là python hoặc bất kỳ ngôn ngữ nào bạn sử dụng chỉ là một giao diện. Xem ví dụ Hướng dẫn lập trình Python của Spark . Bạn có loại dữ liệu nào và bạn muốn làm gì với nó?


3

Để xử lý lượng dữ liệu như vậy, ngôn ngữ lập trình không phải là mối quan tâm chính mà là khung lập trình. Các khung như MapReduce hoặc Spark có các ràng buộc với nhiều ngôn ngữ bao gồm Python. Các khung này chắc chắn có nhiều gói sẵn sàng sử dụng cho các nhiệm vụ phân tích dữ liệu. Nhưng cuối cùng tất cả đều đến với yêu cầu của bạn, tức là nhiệm vụ của bạn là gì? Mọi người có định nghĩa khác nhau về các nhiệm vụ phân tích dữ liệu, một số trong số họ có thể được giải quyết dễ dàng với cơ sở dữ liệu quan hệ. Trong trường hợp đó, SQL tốt hơn nhiều so với tất cả các lựa chọn thay thế khác.


2

Tôi tin rằng ngôn ngữ tự nó không liên quan nhiều đến khả năng thực hiện, khi nói đến dữ liệu lớn. Vấn đề là:

  • Dữ liệu thực sự lớn đến mức nào
  • Bạn sẽ thực hiện quá trình xử lý nào trên đó
  • Bạn sẽ sử dụng phần cứng nào
  • Đó là những thư viện cụ thể mà bạn dự định sử dụng

Dù sao, Python cũng được chấp nhận trong cộng đồng khoa học dữ liệu.


2

Tôi đã sử dụng Anaconda Python 3.4 và Pandas để tìm kiếm cơ sở dữ liệu hàng 10 triệu để khớp với 20K thông tin đăng nhập. Mất khoảng một phút. Các gấu trúc bên trong sử dụng rất nhiều bộ nhớ. Điều đó nói rằng, dữ liệu thực sự lớn đòi hỏi một kiến ​​trúc xử lý phù hợp với vấn đề. Pandas chỉ là chất keo (logic) trong phương trình này, và các công cụ khác cũng có thể làm điều này. R, Scala, Haskell, SAS, v.v. có thể sao chép một số logic - có lẽ chỉ đủ để trả lời các câu hỏi nhanh hơn. Nhưng python làm cho một công cụ đa năng tốt (tốt nhất?). Bạn có thể chạy mã R trong python, cũng như hầu hết các ngôn ngữ khác. Mặc dù diễn giải, có những kỹ thuật và công cụ hiệu suất cao như pypy có thể khiến python chạy gần như nhanh như các công cụ chuẩn chỉ với nỗ lực hơn một chút. Và python có nhiều thư viện làm mọi thứ - xem danh sách trên.

Nếu bạn hỏi bạn có nên học và sử dụng python không, câu trả lời của tôi là có Các bài báo chỉ ra rằng python được sử dụng nhiều hơn R trong số những người sử dụng cả hai. Nhưng một vài vấn đề khoa học dữ liệu được giải quyết bằng một công cụ duy nhất. Nó có thể trở thành công cụ tiếp theo của bạn, nhưng chỉ có thế - một công cụ. Và cũng giống như không có người tỉnh táo nào xây dựng một ngôi nhà chỉ bằng một cái búa, không có Nhà khoa học dữ liệu lành mạnh nào chỉ sử dụng một công cụ.


0

Thật buồn cười khi mọi người trộn dữ liệu lớn với khoa học dữ liệu và kinh doanh thông minh.

Đầu tiên, dữ liệu lớn có nghĩa là "rất nhiều dữ liệu", rất nhiều thông tin không phù hợp với cơ sở dữ liệu thông thường. Tuy nhiên, đôi khi dữ liệu lớn thậm chí không phải là thông tin "giá trị" thích hợp mà là tài liệu, hình ảnh, v.v.

Vì vậy, để xử lý dữ liệu lớn, CHÚNG TÔI CẦN TỐC ĐỘ. Python không tham gia giải đấu, vì vậy R. Tuy nhiên, nếu nhiệm vụ dễ dàng như lấy CSV và chèn vào cơ sở dữ liệu, thì đó là ETL, chúng tôi không cần lập trình để làm điều đó.

Và khi thông tin giảm đi, thì chúng ta có thể áp dụng python, r hoặc bất cứ thứ gì bạn muốn. Ngay cả Excel. Tuy nhiên, trong giai đoạn này, Dữ liệu lớn không còn lớn nữa mà là dữ liệu thông thường.

IMHO, Java phù hợp hơn với Dữ liệu lớn (cho toàn chuỗi) nhưng mọi người lấy Python làm mặc định vì một số lý do không thực tế.

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.