Hướng dẫn PySpark - Học Apache Spark bằng Python



Trong blog này về Hướng dẫn PySpark, bạn sẽ tìm hiểu về API PSpark được sử dụng để làm việc với Apache Spark bằng Ngôn ngữ lập trình Python.

Trong một thế giới mà dữ liệu đang được tạo ra với tốc độ đáng báo động như vậy, việc phân tích chính xác dữ liệu đó vào đúng thời điểm là rất hữu ích. Một trong những framework tuyệt vời nhất để xử lý dữ liệu lớn trong thời gian thực và thực hiện phân tích là Apache Spark.Cùng với nhau, hoặc PySpark là một trong những khóa học cấp chứng chỉ được tìm kiếm nhiều nhất, giúp Scala for Spark kiếm tiền. Vì vậy, trong này Hướng dẫn PySpark blog, tôi sẽ thảo luận về các chủ đề sau:





Hướng dẫn sử dụng PySpark: PySpark là gì?

Apache Spark là một khuôn khổ tính toán cụm nhanh được sử dụng để xử lý, truy vấn và phân tích Dữ liệu lớn. Dựa trên tính toán trong bộ nhớ, nó có lợi thế hơn một số Khung dữ liệu lớn khác.

Các tính năng của PySpark - Hướng dẫn PySpark - Edureka



Ban đầu được viết bằng Ngôn ngữ lập trình Scala, cộng đồng mã nguồn mở đã phát triển một công cụ tuyệt vời để hỗ trợ Python cho Apache Spark. PySpark giúp các nhà khoa học dữ liệu giao diện với RDD trong Apache Spark và Python thông qua thư viện của nó Py4j. Có nhiều tính năng làm cho PySpark trở thành một khung công tác tốt hơn những tính năng khác:

  • 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: Tính toán theo thời gian thực và độ trễ thấp do tính toán trong bộ nhớ
  • Đa ngữ: Hỗ trợ lập trình bằng Scala, Java, Python và R

Hãy tiếp tục với Blog Hướng dẫn PySpark của chúng tôi và xem Spark được sử dụng ở đâu trong ngành.

PySpark trong ngành

Mọi ngành đều xoay quanh Dữ liệu lớn và ở đâu có Dữ liệu lớn thì có Phân tích. Vì vậy, chúng ta hãy xem xét các ngành khác nhau nơi Apache Spark được sử dụng.



Một nửa là một trong những ngành lớn nhất đang phát triển theo hướng phát trực tuyến. Netflix sử dụng Apache Spark để xử lý luồng theo thời gian thực nhằm cung cấp các đề xuất trực tuyến được cá nhân hóa cho khách hàng của mình. Nó xử lý 450 tỷ sự kiện mỗi ngày đến các ứng dụng phía máy chủ.

Tài chính là một lĩnh vực khác mà xử lý Thời gian thực của Apache Spark đóng một vai trò quan trọng. Các ngân hàng đang sử dụng Spark để truy cập và phân tích hồ sơ mạng xã hội, để có được thông tin chi tiết có thể giúp họ đưa ra quyết định kinh doanh đúng đắn đánh giá rủi ro tín dụng , quảng cáo được nhắm mục tiêu và phân khúc khách hàng. Khách hàng Churn cũng bị giảm khi sử dụng Spark. Phát hiện gian lận là một trong những lĩnh vực được sử dụng rộng rãi nhất của Học máy nơi Spark tham gia.

sự khác biệt giữa mở rộng và thực hiện trong java

Chăm sóc sức khỏe các nhà cung cấp đang sử dụng Apache Spark để Phân tích hồ sơ bệnh nhân cùng với dữ liệu lâm sàng trong quá khứ để xác định những bệnh nhân nào có khả năng phải đối mặt với các vấn đề sức khỏe sau khi xuất viện. Apache Spark được sử dụng trong Giải trình tự gen để giảm thời gian cần thiết để xử lý dữ liệu bộ gen.

Bán lẻ và thương mại điện tử là một ngành mà người ta không thể tưởng tượng nó sẽ chạy nếu không sử dụng Phân tích và Quảng cáo Nhắm mục tiêu. Một trong những nền tảng thương mại điện tử lớn nhất hiện nay Alibaba điều hành một số công việc Spark lớn nhất trên thế giới để phân tích hàng petabyte dữ liệu. Alibaba thực hiện khai thác tính năng trong dữ liệu hình ảnh. eBay sử dụng Apache Spark để cung cấp Phiếu mua hàng được nhắm mục tiêu , nâng cao trải nghiệm của khách hàng và tối ưu hóa hiệu suất tổng thể.

Du lịch Các ngành công nghiệp cũng sử dụng Apache Spark. TripAdvisor , một trang web du lịch hàng đầu giúp người dùng lên kế hoạch cho một chuyến đi hoàn hảo đang sử dụng Apache Spark để tăng tốc đề xuất khách hàng được cá nhân hóa .Tripvisor 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.

Một khía cạnh quan trọng của Hướng dẫn PySpark này là hiểu tại sao chúng ta cần sử dụng Python? Tại sao không phải là Java, Scala hoặc R?

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


Tại sao nên sử dụng Python?

Dễ học: Đối với các lập trình viên, Python tương đối dễ học hơn vì cú pháp và các thư viện 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ột tập hợp lớn các Thư viện: Scala không có đủ các công cụ và thư viện khoa học dữ liệu như Python để học máy và xử lý ngôn ngữ tự nhiên. Hơn nữa, Scala thiếu khả năng trực quan hóa tốt và chuyển đổi dữ liệu cục bộ.

Hỗ trợ cộng đồng lớn: Python có một cộng đồng toàn cầu với hàng triệu nhà phát triển tương tác trực tuyến và ngoại tuyến ở hàng nghìn địa điểm ảo và thực.

Một trong những chủ đề quan trọng nhất trong Hướng dẫn PySpark này là việc sử dụng RDD. Hãy hiểu RDD là gì

Spark RDDs

Khi nói đến tính toán phân tán lặp đi lặp lại, tức là xử lý dữ liệu qua nhiều công việc trong tính toán, chúng ta cần sử dụng lại hoặc chia sẻ dữ liệu giữa nhiều công việc. Các khuôn khổ trước đó như Hadoop đã gặp sự cố khi xử lý nhiều hoạt động / công việc như

  • Lưu trữ dữ liệu trong bộ nhớ trung gian như HDFS
  • Nhiều công việc I / O làm cho tính toán chậm
  • Các bản sao và tuần tự hóa khiến quá trình này thậm chí còn chậm hơn

Các RDD cố gắng giải quyết tất cả các vấn đề bằng cách cho phép các tính toán trong bộ nhớ phân tán có khả năng chịu lỗi. RDD là viết tắt của Tập dữ liệu được phân phối có khả năng phục hồi. RDD là một trừu tượng hóa bộ nhớ phân tán cho phép các lập trình viên thực hiện các phép tính trong bộ nhớ trên các cụm lớn theo cách có thể chịu được lỗi. Họ là bộ sưu tập các đối tượng chỉ đọc được phân vùng trên một nhóm máy có thể được tạo lại nếu một phân vùng bị mất. Có một số hoạt động được thực hiện trên RDD:

  • Biến đổi: Việc chuyển đổi tạo ra một tập dữ liệu mới từ tập dữ liệu hiện có. Đánh giá lười biếng
  • Hành động: Spark buộc các tính toán chỉ thực thi khi các hành động được gọi trên RDDs

Hãy cùng tìm hiểu một số Chuyển đổi, Hành động và Chức năng

Đọc tệp và hiển thị n phần tử hàng đầu:

rdd = sc.textFile ('file: /// home / edureka / Desktop / Sample') rdd.take (n)

Đầu ra:

[u'Chất phá rừng đang phát sinh như một vấn đề chính về môi trường và xã hội, hiện đã mang hình thức của nhiều hơn một con quỷ mạnh mẽ. ', u'Chúng ta phải biết về nguyên nhân, ảnh hưởng và cách giải quyết những vấn đề nảy sinh do nạn phá rừng gây ra. ', u'Chúng tôi đã cung cấp nhiều đoạn văn, bài văn dài và ngắn về nạn phá rừng nhằm giúp các em và các em nhận thức về vấn đề cũng như tham gia cuộc thi viết văn trong trường hoặc ngoài trường. ', u'Bạn có thể chọn bất kỳ bài văn phá rừng nào dưới đây theo tiêu chuẩn của lớp. ', u'Chất phá rừng đang phát sinh như một vấn đề toàn cầu đối với xã hội và môi trường.']

Chuyển đổi thành chữ thường và tách: (Lower and Split)

def Func (lines): lines = lines.lower () lines = lines.split () return lines rdd1 = rdd.map (Func) rdd1.take (5)

Đầu ra:

[[u'deforestation ', u'is ', u'ausing', u'as ', u'the', u'main ', u'en môi trường', u'và ', u'social', u'issue ', u'which', u'has ', u'now', u'taken ', ...... . . ]

Loại bỏ từ dừng: (Bộ lọc)

stop_words = ['a', 'all', 'the', 'as', 'is', 'am', 'an', 'và', 'be', 'be', 'from', 'had' , 'Tôi', 'Tôi muốn', 'tại sao', 'với'] rdd2 = rdd1.filter (lambda z: z không có trong stop_words) rdd2.take (10)

Đầu ra:

[u 'phá rừng', không phát sinh ', u'main', u'en môi trường ', u'social', u'issue ', u'which', u'has ', u'now', u'taken ' ]

Tổng các số từ 1 đến 500: (Giảm)

sum_rdd = sc.parallelize (range (1.500)) sum_rdd.reduce (lambda x, y: x + y)

Đầu ra:

124750

Học máy với PySpark

Tiếp tục Blog Hướng dẫn PySpark của chúng tôi, hãy cùng phân tích một số Dữ liệu về BasketBall và thực hiện một số Dự đoán trong tương lai. Vì vậy, ở đây chúng tôi sẽ sử dụng Dữ liệu bóng rổ của tất cả các cầu thủ NBA kể từ 1980 [năm giới thiệu 3 Pointers].

Đang tải dữ liệu:

df = spark.read.option ('header', 'true') .option ('invSchema', 'true') .csv ('file: ///home/edureka/Downloads/season_totals.csv')

Cột in:

print (df.columns)

Đầu ra:

['_c0', 'player', 'pos', 'age', 'team_id', 'g', 'gs', 'mp', 'fg', 'fga', 'fg_pct', 'fg3', ' fg3a ',' fg3_pct ',' fg2 ',' fg2a ',' fg2_pct ',' efg_pct ',' ft ',' fta ',' ft_pct ',' orb ',' drb ',' trb ',' ast ' , 'stl', 'blk', 'tov', 'pf', 'pts', 'yr']

Sắp xếp người chơi (OrderBy) và toPandas:

Ở đây chúng tôi sắp xếp các cầu thủ dựa trên điểm ghi được trong một mùa giải.

df.orderBy ('pts', ascending = False) .limit (10) .toPandas () [['yr', 'player', 'age', 'pts', 'fg3']]

Đầu ra:

Sử dụng DSL và matplotlib:

Ở đây, chúng tôi đang phân tích số lượng trung bình của Cố gắng 3 điểm cho mỗi phần trong giới hạn thời gian 36 phút [khoảng thời gian tương ứng với một trận NBA hoàn chỉnh gần đúng với thời gian nghỉ ngơi đầy đủ]. Chúng tôi tính toán số liệu này bằng cách sử dụng số lần thử mục tiêu trường 3 điểm (fg3a) và số phút đã chơi (mp) rồi vẽ biểu đồ kết quả bằng matlplotlib .

from pyspark.sql.functions import col fga_py = df.groupBy ('yr') .agg ({'mp': 'sum', 'fg3a': 'sum'}) .select (col ('yr'), ( 36 * col ('sum (fg3a)') / col ('sum (mp)')). Alias ​​('fg3a_p36m')) .orderBy ('yr') từ matplotlib import pyplot as plt import seaborn as sns plt.style .use ('fivethirtyeight') _df = fga_py.toPandas () plt.plot (_df.yr, _df.fg3a_p36m, color = '# CD5C5C') plt.xlabel ('Năm') _ = plt.title ('Trung bình của người chơi Số lần thử 3 điểm (mỗi 36 phút) ') plt.annotate (' 3 con trỏ được giới thiệu ', xy = (1980, .5), xytext = (1981, 1.1), fontsize = 9, arrowprops = dict (facecolor =' gray ', co = 0, linewidth = 2)) plt.annotate (' NBA di chuyển theo đường 3 điểm ', xy = (1996, 2,4), xytext = (1991,5, 2,7), fontsize = 9, arrowprops = dict (facecolor = 'gray', co = 0, linewidth = 2)) plt.annotate ('NBA đã di chuyển trở lại đường 3 điểm', xy = (1998, 2), xytext = (1998,5, 2,4), fontsize = 9, arrowprops = dict (facecolor = 'gray', co = 0, line width = 2))

Đầu ra:

Hồi quy tuyến tính và VectorAssembler:

Chúng ta có thể phù hợp với mô hình hồi quy tuyến tính với đường cong này để mô hình hóa số lần bắn trong 5 năm tới. Chúng ta phải chuyển đổi dữ liệu của mình bằng cách sử dụng hàm VectorAssembler thành một cột duy nhất. Đây là một yêu cầu cho API hồi quy tuyến tính trong MLlib.

từ pyspark.ml.feature nhập VectorAssembler t = VectorAssembler (inputCols = ['yr'], outputCol = 'features') training = t.transform (fga_py) .withColumn ('yr', fga_py.yr) .withColumn ('label ', fga_py.fg3a_p36m) training.toPandas (). head ()

Đầu ra:

Mô hình xây dựng:

Sau đó, chúng tôi xây dựng đối tượng mô hình hồi quy tuyến tính bằng cách sử dụng dữ liệu đã biến đổi của chúng tôi.

từ pyspark.ml.regression nhập LinearRegression lr = LinearRegression (maxIter = 10) model = lr.fit (đào tạo)

Áp dụng Mô hình đã Đào tạo cho Tập dữ liệu:

Chúng tôi áp dụng mô hình đối tượng mô hình được đào tạo của chúng tôi cho nhóm đào tạo ban đầu cùng với 5 năm dữ liệu trong tương lai

from pyspark.sql.types import Hàng # áp dụng mô hình cho mùa giải 1979-80 đến mùa giải 2020-21 training_yrs = training.select ('yr'). rdd.map (lambda x: x [0]). collect () training_y = training.select ('fg3a_p36m'). rdd.map (lambda x: x [0]). collect () dự đoán_yrs = [2017, 2018, 2019, 2020, 2021] all_yrs = training_yrs + dự đoán_yrs # thử nghiệm đã xây dựng DataFrame test_rdd = sc.parallelize (all_yrs) row = Row ('yr') & ampamplt all_years_features = t.transform (test_rdd.map (row) .toDF ()) # áp dụng mô hình hồi quy tuyến tính df_results = model.transform (all_years_features) .toPandas ()

Lập kế hoạch dự đoán cuối cùng:

Sau đó, chúng tôi có thể vẽ biểu đồ kết quả của mình và lưu biểu đồ ở một vị trí xác định.

plt.plot (df_results.yr, df_results.prediction, linewidth = 2, linestyle = '-', color = '# 224df7', label = 'L2 Fit') plt.plot (training_yrs, training_y, color = '# f08080 ', label = None) plt.xlabel (' Năm ') plt.ylabel (' Số lần thử ') plt.legend (loc = 4) _ = plt.title (' Số lần thử 3 điểm trung bình của người chơi (mỗi 36 phút) ') plt.tight_layout () plt.savefig (' / home / edureka / Downloads / Images / REGRESSION.png ')

Đầu ra:

Và với biểu đồ này, chúng ta sẽ đến phần cuối của Blog Hướng dẫn PySpark này.

Đây là nó, Guys!

Tôi hy vọng các bạn đã biết PySpark là gì, tại sao Python lại phù hợp nhất với Spark, RDD và cái nhìn sơ lược về Học máy với Pyspark trong Blog Hướng dẫn PySpark này. Xin chúc mừng, bạn không còn là Người mới tham gia PySpark. Nếu bạn muốn tìm hiểu thêm về PySpark và Hiểu các Trường hợp Sử dụng Ngành khác nhau, hãy xem Spark với Python Blog.

Bây giờ bạn đã hiểu Pyspark là gì, 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).