Giới thiệu về Spark với Python - PySpark cho người mới bắt đầu



Apache Spark đã tiếp quản thế giới Dữ liệu lớn & Phân tích và Python là một trong những ngôn ngữ lập trình dễ tiếp cận nhất được sử dụng trong Ngành ngày nay. Vì vậy, ở đây trong blog này, chúng ta sẽ tìm hiểu về Pyspark (tia lửa với python) để tận dụng tốt nhất cả hai thế giới.

là một trong những khuôn khổ được sử dụng rộng rãi nhất khi nói đến việc xử lý và làm việc với Dữ liệu lớn VÀ Python là một trong những ngôn ngữ lập trình được sử dụng rộng rãi nhất cho Phân tích dữ liệu, Học máy và hơn thế nữa. Vì vậy, tại sao không sử dụng chúng cùng nhau? Đây là đâu Spark với Python còn được biết là PySpark đi vàocáchình ảnh.

Với mức lương trung bình là 110.000 đô la mỗi năm cho một Nhà phát triển Apache Spark, chắc chắn rằng Spark được sử dụng rất nhiều trong ngành. Bởi vìnó làbộ thư viện phong phú, Python được sử dụng bởicácphần lớn các nhà khoa học dữ liệu và chuyên gia phân tích ngày nay. Tích hợp Python với Spark là một món quà lớn đối với cộng đồng. Spark được phát triển bằng ngôn ngữ Scala, rất giống với Java. Nó biên dịch mã chương trình thành bytecode cho JVM để kích hoạt xử lý dữ liệu lớn. Để hỗ trợ Spark với python, cộng đồng Apache Spark đã phát hành PySpark.Kể từ đó, đã được biết đến là một trong những kỹ năng được tìm kiếm nhiều nhất trong toàn ngành do nhiều lợi ích mang lại sau khi kết hợp những gì tốt nhất của cả hai thế giới này.Trong blog Spark with Python này, tôi sẽ thảo luận về các chủ đề sau.





Giới thiệu về Apache Spark

Apache Spark là một khuôn khổ điện toán cụm mã nguồn mở cho xử lý thời gian thực được phát triển bởi Apache Software Foundation. Spark cung cấp một giao diện để lập trình toàn bộ các cụm với dữ liệu song songkhả năng chịu lỗi.



Dưới đây là một số tính năng của Apache Spark giúp nó có lợi thế hơn các framework khác:

Tính năng Spark - Spark với Python - Edureka

  • Tốc độ: Nó nhanh hơn 100 lần so với các khuôn khổ xử lý dữ liệu quy mô lớn truyền thống.
  • Bộ nhớ đệm mạnh mẽ: Lớp lập trình đơn giản cung cấp khả năng lưu trữ ổ đĩa và bộ nhớ đệm mạnh mẽ.
  • Triển khai: Có thể được triển khai thông qua Mesos, Hadoop qua Yarn hoặc trình quản lý cụm riêng của Spark.
  • Thời gian thực: Thời gian thựctính toán & độ trễ thấp do tính toán trong bộ nhớ.
  • Đa ngôn: Nó là một trong những điều quan trọng nhấtđặc trưngcủa khung này vì nó có thể được lập trình bằng Scala, Java, Python và R.

Tại sao lại sử dụng Python?

Mặc dù Spark được thiết kế theo kiểu scala, làm cho nó nhanh hơn gần 10 lần so với Python, nhưng Scala chỉ nhanh hơn khi số lõi được sử dụng ít hơn . Vì hầu hết các phân tích và quy trình hiện nay đều yêu cầu một số lượng lớn lõi, lợi thế về hiệu suất của Scala không nhiều.



chạy truy vấn hive từ dòng lệnh

Đối với lập trình viên Python là tương đối dễ dàng hơn học vì cú pháp và các thư viện tiêu chuẩn của nó. Hơn nữa, nó là một ngôn ngữ được nhập động, có nghĩa là các RDD có thể chứa các đối tượng thuộc nhiều loại.

Mặc dù Scala có SparkMLlib nó không có đủ thư viện và công cụ cho Học máy và NLP các mục đích. Hơn nữa, Scala thiếu Trực quan hóa Dữ liệu.

Đào tạo PySpark | Apache Spark với Python | Edureka

Đăng ký kênh youtube của chúng tôi để cập nhật những thông tin mới ..!

Thiết lập Spark với Python (PySpark)

Tôi hy vọng các bạn biết cách .Vì vậy, một khi bạn đã giải nén tệp tia lửa, Cài đặt nó và thêm nó là đường dẫn đến .bashrc tập tin, bạn cần phải nhậpnguồn .bashrc

export SPARK_HOME = /usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7 export PATH = $ PATH: /usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7/bin

Để mở trình bao pyspark, bạn cần nhập lệnh./bin/pyspark

Tia lửa trong ngành

Apache Spark vì các tính năng tuyệt vời của nó như xử lý trong bộ nhớ , đa ngôn ngữxử lý nhanh đang được sử dụng bởi nhiều công ty trên toàn cầu cho các mục đích khác nhau trong các ngành công nghiệp khác nhau:

Yahoo sử dụng Apache Spark cho khả năng Máy học của nó để cá nhân hóa tin tức, trang web và cả quảng cáo mục tiêu. Họ sử dụng Spark với python để tìm ra loại tin tức - người dùng muốn đọc và phân loại các tin bài để tìm ra loại người dùng sẽ quan tâm khi đọc từng loại tin tức.

TripAdvisor sử dụng apache spark để cung cấp lời khuyên cho hàng triệu khách du lịch bằng cách so sánh hàng trăm trang web để tìm giá khách sạn tốt nhất cho khách hàng của mình. Thời gian cần thiết để đọc và xử lý các đánh giá về khách sạn ở định dạng dễ đọc được thực hiện với sự trợ giúp của Apache Spark.

Một trong những nền tảng thương mại điện tử lớn nhất thế giới Alibaba điều hành một số công việc Apache Spark lớn nhất trên thế giới để phân tích hàng trăm petabyte dữ liệu trên nền tảng thương mại điện tử của nó.

PySpark SparkContext và Luồng dữ liệu

Nói về Spark với Python, làm việc với RDD được thực hiện bởi thư viện Py4j. PySpark Shell liên kết API Python với lõi spark và khởi tạo Spark Context. Bối cảnh Spark là trung tâm của bất kỳ ứng dụng tia lửa nào.

  1. Bối cảnh Spark thiết lập các dịch vụ nội bộ và thiết lập kết nối với môi trường thực thi Spark.
  2. Đối tượng sparkcontext trong chương trình trình điều khiển điều phối tất cả quá trình phân tán và cho phép phân bổ tài nguyên.
  3. Người quản lý cụm cung cấp Người thực thi, là quá trình JVM với logic.
  4. Đối tượng SparkContext gửi ứng dụng đến những người thực thi.
  5. SparkContext thực thi các tác vụ trong mỗi trình thực thi.

Trường hợp sử dụng PySpark KDD

Bây giờ chúng ta hãy xem xét một Trường hợp sử dụng của Cúp KDD’99 (Cuộc thi Khám phá Tri thức Quốc tế và Công cụ Khai thác Dữ liệu).Ở đây chúng tôi sẽ lấy một phần nhỏ của tập dữ liệu vì tập dữ liệu gốc quá lớn

import urllib f = urllib.urlretrieve ('http://kdd.ics.uci.edu/databases/kddcup99/kddcup.data_10_percent.gz', 'kddcup.data_10_percent.gz')

TẠO RDD:
Bây giờ chúng ta có thể sử dụng tệp này để tạo RDD của chúng tôi .

data_file = './kddcup.data_10_percent.gz' raw_data = sc.textFile (data_file)

LỌC:

Giả sử Chúng ta muốn đếm có bao nhiêu bình thường. tương tác mà chúng tôi có trong tập dữ liệu của mình. Chúng ta có thể bộ lọc RDD raw_data của chúng tôi như sau.

normal_raw_data = raw_data.filter (lambda x: 'normal.' in x)

ĐẾM:

Bây giờ chúng ta có thể đếm chúng ta có bao nhiêu phần tử trong RDD mới.

từ thời gian nhập thời gian t0 = time () normal_count = normal_raw_data.count () tt = time () - t0 print 'Có {}' bình thường 'tương tác'.format (normal_count) print' Đếm hoàn thành sau {} giây'.format (vòng (tt, 3))

Đầu ra:

Có 97278 lượt tương tác 'bình thường' được hoàn thành trong 5,951 giây

BẢN ĐỒ:

Trong nàytrường hợpchúng tôi muốn đọc tệp dữ liệu của mình dưới dạng tệp được định dạng CSV. Chúng ta có thể làm điều này bằng cách áp dụng một hàm lambda cho mỗi phần tử trong RDD như sau. Ở đây chúng tôi sẽ sử dụng map () và biến đổi take ().

from pprint import pprint csv_data = raw_data.map (lambda x: x.split (',')) t0 = time () head_rows = csv_data.take (5) tt = time () - t0 print 'Quá trình phân tích cú pháp hoàn tất sau {} giây '.format (round (tt, 3)) pprint (head_rows [0])

Đầu ra:

Quá trình phân tích cú pháp hoàn tất sau 1,715 giây [u'0 ', u'tcp', u'http ', u'SF', u'181 ', u'5450', u'0 ', u'0' ,. . không bình thường. ']

LỜI NÓI:

Bây giờ chúng ta muốn có mỗi phần tử trong RDD dưới dạng một cặp khóa-giá trị trong đó khóa là thẻ (ví dụ: bình thường ) và giá trị là toàn bộ danh sách các phần tử đại diện cho hàng trong tệp có định dạng CSV. Chúng tôi có thể tiến hành như sau. Ở đây chúng tôi sử dụng line.split () và map ().

def parse_interaction (line): elems = line.split (',') tag = elems [41] return (tag, elems) key_csv_data = raw_data.map (parse_interaction) head_rows = key_csv_data.take (5) pprint (head_rows [0] )
 Đầu ra: (không bình thường. ', [u'0', u'tcp ', u'http', u'SF ', u'181', u'5450 ', u'0', u'0 ', u' 0,00 ', u'1,00', .... Không bình thường. '])

HÀNH ĐỘNG THU:

Ở đây chúng ta sẽ sử dụng hành động thu thập (). Nó sẽ đưa tất cả các phần tử của RDD vào bộ nhớ. Vì lý do này, nó phải được sử dụng cẩn thận khi làm việc với các RDD lớn.

t0 = time () all_raw_data = raw_data.collect () tt = time () - t0 print 'Dữ liệu được thu thập trong {} giây'. định dạng (vòng (tt, 3))

Đầu ra:

Dữ liệu được thu thập trong 17,927 giây

Tất nhiên, điều đó mất nhiều thời gian hơn bất kỳ hành động nào khác mà chúng tôi đã sử dụng trước đây. Mọi nút công nhân Spark có một phân đoạn của RDD phải được phối hợp để lấy phần của nó và sau đó giảm bớt mọi thứ lại với nhau.

Là ví dụ cuối cùng kết hợp tất cả những điều trước đó, chúng tôi muốn thu thập tất cảbình thườngtương tác dưới dạng cặp khóa-giá trị.

# lấy dữ liệu từ tệp data_file = './kddcup.data_10_percent.gz' raw_data = sc.textFile (data_file) # phân tích cú pháp thành các cặp khóa-giá trị key_csv_data = raw_data.map (parse_interaction) # lọc các tương tác khóa bình thường normal_key_interaction = key_csv_data.filter ( lambda x: x [0] == 'normal.') # thu thập tất cả t0 = time () all_normal = normal_key_interaction.collect () tt = time () - t0 normal_count = len (all_normal) print 'Dữ liệu được thu thập sau {} giây '.format (round (tt, 3)) print' Có {} tương tác 'bình thường' '. formatat (normal_count)

Đầu ra:

Dữ liệu được thu thập trong 12,485 giây Có 97278 tương tác bình thường

Vậy là xong rồi đó các bạn!

Tôi hy vọng bạn thích blog Spark with Python này. Nếu bạn đang đọc điều này, Xin chúc mừng! Bạn không còn là người mới sử dụng PySpark. Hãy thử ví dụ đơn giản này trên hệ thống của bạn ngay bây giờ.

Bây giờ bạn đã hiểu cơ bản về PySpark, hãy xem của Edureka, một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu. Edureka's Đào tạo chứng chỉ Python Spark bằng PySpark được thiết kế để cung cấp cho bạn kiến ​​thức và kỹ năng cần thiết để trở thành Nhà phát triển Spark thành công bằng Python và chuẩn bị cho bạn cho Kỳ thi cấp chứng chỉ Nhà phát triển Cloudera Hadoop và Spark (CCA175).

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần bình luận và chúng tôi sẽ liên hệ lại với bạn.