Cách làm việc với dữ liệu lớn trong python

Mặc dù nhiều người gác cổng tranh luận liệu một người có thực sự là nhà phát triển phần mềm hay không nếu họ không viết mã bằng ngôn ngữ khó hơn Python, nhưng nó vẫn tồn tại ở khắp mọi nơi

Nó được sử dụng để tự động hóa, quản lý trang web, phân tích dữ liệu và xử lý dữ liệu lớn

Khi dữ liệu phát triển, cách chúng ta quản lý dữ liệu ngày càng được điều chỉnh tốt hơn

Chúng tôi không bị giới hạn chỉ sử dụng cơ sở dữ liệu quan hệ nữa

Điều đó cũng có nghĩa là hiện có nhiều công cụ hơn để tương tác với các hệ thống mới này, như Kafka, Hadoop (cụ thể hơn là HBase), Spark, BigQuery và Redshift (có thể kể tên một số)

Mỗi hệ thống này tận dụng các khái niệm như phân phối, kiến ​​trúc cột và truyền dữ liệu để cung cấp thông tin cho người dùng cuối nhanh hơn

Nhu cầu về thông tin nhanh hơn, cập nhật hơn sẽ thúc đẩy nhu cầu về kỹ sư dữ liệu và kỹ sư phần mềm sử dụng các công cụ này

Đó là lý do tại sao chúng tôi muốn cung cấp phần giới thiệu nhanh về một số thư viện Python có thể giúp ích cho bạn

truy vấn lớn

Google BigQuery là kho doanh nghiệp rất phổ biến được xây dựng với sự kết hợp của Google Cloud Platform và Bigtable

Dịch vụ đám mây này hoạt động hiệu quả với mọi kích cỡ dữ liệu và thực hiện các truy vấn phức tạp trong vài giây

BigQuery là một dịch vụ web RESTful cho phép các nhà phát triển thực hiện phân tích tương tác trên các tập dữ liệu khổng lồ kết hợp với Google Cloud Platform. Hãy xem một ví dụ mà tôi tổng hợp trong một phần khác ở đây

Ví dụ này cho bạn thấy cách bạn có thể kết nối với BigQuery, sau đó bắt đầu lấy thông tin về các bảng và tập dữ liệu mà bạn sẽ tương tác

Trong trường hợp này, tập dữ liệu Medicare là tập dữ liệu nguồn mở mà bất kỳ ai cũng có thể truy cập

Một điểm khác về BigQuery là nó hoạt động trên Bigtable. Điều quan trọng là phải hiểu kho này không phải là cơ sở dữ liệu giao dịch. Do đó, nó không thể được coi là cơ sở dữ liệu xử lý giao dịch trực tuyến (OLTP). Nó được thiết kế đặc biệt cho dữ liệu lớn. Do đó, nó hoạt động phù hợp với việc xử lý các tập dữ liệu có kích thước petabyte

Dịch chuyển đỏ và đôi khi là S3

Tiếp theo, chúng ta có Redshift và S3 phổ biến của Amazon. Amazon S3 về cơ bản là một dịch vụ lưu trữ được sử dụng để lưu trữ và truy xuất lượng dữ liệu khổng lồ từ mọi nơi trên internet. Với dịch vụ này, bạn chỉ trả tiền cho dung lượng lưu trữ mà bạn thực sự sử dụng. Mặt khác, Redshift là một kho dữ liệu được quản lý hoàn toàn, xử lý dữ liệu ở quy mô petabyte một cách hiệu quả. Dịch vụ này cung cấp khả năng truy vấn nhanh hơn bằng các công cụ SQL và BI

Cùng với nhau, Amazon Redshift và S3 hoạt động vì dữ liệu như một sự kết hợp mạnh mẽ. Lượng dữ liệu khổng lồ có thể được bơm vào kho Redshift bằng S3. Công cụ mạnh mẽ này khi được mã hóa bằng Python sẽ trở nên rất thuận tiện cho các nhà phát triển. Chúng ta hãy xem một “Xin chào, Thế giới” đơn giản. ” ví dụ để tham khảo

Kịch bản này là một kết nối cơ bản. Chọn bằng cách sử dụng psycopg2

Trong trường hợp này, tôi đã mượn mã jaychoo

Nhưng điều này, một lần nữa, cung cấp hướng dẫn nhanh về cách kết nối và sau đó lấy dữ liệu từ Redshift

PySpark

Được rồi, hãy rời khỏi thế giới của các hệ thống lưu trữ dữ liệu và hãy xem xét các công cụ giúp bạn xử lý dữ liệu nhanh chóng

Apache Spark là một khung nguồn mở rất phổ biến, thực hiện xử lý dữ liệu phân tán quy mô lớn. Nó cũng có thể được sử dụng cho máy học

Khung điện toán cụm này tập trung chủ yếu vào phân tích hợp lý hóa. Nó hoạt động với các bộ dữ liệu phân tán đàn hồi (RDD) và cho phép người dùng xử lý các tài nguyên được quản lý của các cụm tia lửa

Nó thường được sử dụng kết hợp với các sản phẩm Apache khác (như HBase). Spark sẽ nhanh chóng xử lý dữ liệu và sau đó lưu trữ nó thành một bộ bảng trên các hệ thống lưu trữ dữ liệu khác

Để bắt đầu, hãy xem một ví dụ cơ bản về chạy tia lửa

Đôi khi cài đặt PySpark có thể là một thách thức, vì nó yêu cầu phụ thuộc. Bạn thấy nó chạy trên JVM và do đó, yêu cầu cơ sở hạ tầng cơ bản của Java để hoạt động. Tuy nhiên, trong thời đại mà Docker đang thịnh hành, việc thử nghiệm với PySpark trở nên thuận tiện hơn rất nhiều

Alibaba sử dụng PySpark để cá nhân hóa các trang web và cung cấp quảng cáo mục tiêu — cũng như nhiều tổ chức dựa trên dữ liệu lớn khác

Con trăn Kafka

Kafka là một hệ thống nhắn tin đăng ký xuất bản phân tán cho phép người dùng duy trì nguồn cấp tin nhắn trong cả chủ đề được sao chép và phân vùng

Các chủ đề này về cơ bản là nhật ký nhận dữ liệu từ máy khách và lưu trữ trên các phân vùng. Kafka Python được thiết kế để hoạt động như một ứng dụng khách Java chính thức được tích hợp với giao diện Python. Nó được sử dụng tốt nhất với các nhà môi giới mới và tương thích ngược với tất cả các phiên bản cũ của nó

KafkaNgười Tiêu Dùng

KafkaNhà sản xuất

Như bạn có thể thấy trong các ví dụ trên, mã hóa bằng Kafka Python yêu cầu cả người tiêu dùng và nhà sản xuất tham chiếu

Trong Kafka Python, chúng tôi có hai mặt này hoạt động song song. KafkaConsumer về cơ bản là một trình tiêu dùng tin nhắn cấp cao có ý định hoạt động như một ứng dụng khách Java chính thức

Nó yêu cầu các nhà môi giới hỗ trợ API nhóm. KafkaProducer là một trình tạo thông báo không đồng bộ, cũng có ý định hoạt động rất giống với các máy khách Java. Nhà sản xuất có thể được sử dụng trên các luồng mà không gặp sự cố, trong khi người tiêu dùng yêu cầu đa xử lý

Pydoop

Hãy giải quyết vấn đề này. Không, bản thân Hadoop không phải là một hệ thống lưu trữ dữ liệu. Hadoop thực sự có một số thành phần, bao gồm MapReduce và Hệ thống tệp phân tán Hadoop (HDFS)

Vì vậy, Pydoop nằm trong danh sách này, nhưng bạn sẽ cần ghép nối Hadoop với các lớp khác (chẳng hạn như Hive) để sắp xếp dữ liệu dễ dàng hơn

Pydoop là một giao diện Hadoop-Python cho phép bạn tương tác với API HDFS và viết các công việc MapReduce bằng mã Python thuần túy

Thư viện này cho phép nhà phát triển truy cập các chức năng MapReduce quan trọng, chẳng hạn như RecordReaderPartitioner mà không cần biết Java. Đối với ví dụ cuối cùng này, tôi nghĩ những người ở Edureka làm điều đó tốt hơn tôi có thể. Vì vậy, đây là một đoạn giới thiệu nhanh tuyệt vời

Bản thân Pydoop có thể hơi quá thấp đối với hầu hết các kỹ sư dữ liệu. Nhiều khả năng, hầu hết các bạn sẽ viết ETL trong Luồng không khí chạy trên các hệ thống này. Nhưng thật tuyệt khi ít nhất có được sự hiểu biết chung về những gì bạn đang làm việc

Vậy bạn sẽ bắt đầu từ đâu?

Quản lý dữ liệu lớn sẽ chỉ trở nên khó khăn hơn trong những năm tới

Do khả năng kết nối ngày càng tăng - IoT, tính toán được cải thiện, v.v. — cơn lũ dữ liệu đang đến với chúng ta sẽ tiếp tục tăng lên

Do đó, hiểu biết về một số hệ thống dữ liệu và thư viện mà bạn có thể sử dụng để tương tác với các hệ thống này là cần thiết nếu chúng ta muốn theo kịp

Python có thể được sử dụng cho Dữ liệu lớn không?

Python cung cấp một số lượng lớn thư viện để hoạt động trên Dữ liệu lớn . Bạn cũng có thể làm việc - về mặt phát triển mã - sử dụng Python cho Dữ liệu lớn nhanh hơn nhiều so với bất kỳ ngôn ngữ lập trình nào khác.

Cần bao nhiêu Python cho Dữ liệu lớn?

Đối với khoa học dữ liệu, ước tính là khoảng từ 3 tháng đến một năm trong khi thực hành nhất quán

Làm thế nào để gấu trúc xử lý Dữ liệu lớn trong Python?

Chúng ta có thể tối ưu hóa các kiểu dữ liệu như kiểu dữ liệu số nguyên của int64 có thể chuyển thành int8, kiểu dữ liệu float của float64 có thể chuyển thành float16, v.v. Tối ưu hóa dữ liệu giúp giảm kích thước dữ liệu. Có một số giải pháp thay thế gấu trúc để xử lý dữ liệu lớn, Một số trong số đó là Dask, Ray, Modin và Vaex .

Gấu trúc có thể được sử dụng cho Dữ liệu lớn không?

pandas cung cấp cấu trúc dữ liệu cho phân tích trong bộ nhớ, điều này làm cho việc sử dụng pandas để phân tích tập dữ liệu lớn hơn tập dữ liệu trong bộ nhớ hơi phức tạp . Ngay cả các bộ dữ liệu chiếm một phần lớn bộ nhớ cũng trở nên khó sử dụng, vì một số hoạt động của gấu trúc cần tạo các bản sao trung gian.