2016-09-14 20 views
44

Có ai có cái nhìn tổng quan về lợi thế/bất lợi của SparkR và sparklyr không? Google không mang lại bất kỳ kết quả khả quan nào và cả hai dường như khá giống nhau. Hãy thử cả hai, SparkR xuất hiện rất nhiều cồng kềnh, trong khi sparklyr khá thẳng về phía trước (cả cài đặt mà còn sử dụng, đặc biệt là với các đầu vào dplyr). Sparklyr chỉ có thể được sử dụng để chạy các hàm dplyr song song hay cũng là R-Code "bình thường"?SparkR vs sparklyr

nhất

Trả lời

4

Đối với cái nhìn tổng quan và chi tiết sâu sắc, bạn có thể tham khảo các documentation. Trích dẫn từ tài liệu, "gói sparklyr cung cấp chương trình phụ trợ hoàn chỉnh dplyr". Điều này phản ánh rằng sparklyr là NOT một sự thay thế cho tia lửa apache ban đầu nhưng là một phần mở rộng cho nó.

Tiếp tục, nói về cài đặt (tôi là người dùng Windows) trên máy tính độc lập, bạn cần tải xuống và cài đặt phiên bản RStudio Preview mới hoặc thực hiện chuỗi lệnh sau trong vỏ RStudio,

> devtools::install_github("rstudio/sparklyr")

cài đặt gói readr và digest nếu bạn chưa cài đặt.

install.packages("readr") 
install.packages("digest") 
library(sparklyr) 
spark_install(version = "1.6.2")` 

Khi gói được cài đặt và bạn cố gắng kết nối Kết nối với bản sao cục bộ của tia lửa bằng lệnh;

sc <- spark_connect(master = "local") 

Bạn có thể thấy một lỗi như

Created default hadoop bin directory under: C:\spark-1.6.2\tmp\hadoop Error:

Để chạy Spark trên Windows bạn cần một bản sao của Hadoop winutils.exe:

  1. Tải Hadoop winutils.exe from
  2. Sao chép winutils.exe vào C: \ spark-1.6.2 \ tmp \ hadoop \ bin

Hoặc, nếu bạn đang sử dụng RStudio, bạn có thể cài đặt RStudio Preview Release bao gồm bản sao nhúng của Hadoop winutils.exe.

Độ phân giải lỗi được cung cấp cho bạn. Đi đến tài khoản github, tải xuống tệp winutils.exe và lưu nó vào vị trí, C:\spark-1.6.2\tmp\hadoop\bin và thử tạo lại ngữ cảnh tia lửa. Năm ngoái, tôi đã xuất bản một bài đăng toàn diện trên số blog chi tiết việc cài đặt và làm việc với sparkR trên môi trường windows.

Có nói rằng, tôi khuyên bạn không nên đi qua con đường đau đớn này để cài đặt một thể hiện tia lửa cục bộ trên RStudio thông thường, thay vì thử phiên bản RStudio Preview. Nó sẽ giúp bạn tiết kiệm rất nhiều rắc rối khi tạo ra các sparkcontext. Tiếp tục hơn nữa, đây là một bài chi tiết về cách sparklyr có thể được sử dụng R-bloggers.

Tôi hy vọng điều này sẽ hữu ích.

Chúc mừng.

4

tôi có thể cung cấp cho bạn những điểm nổi bật cho sparklyr:

Trong phiên bản 0.4 hiện tại, nó không hỗ trợ thực thi mã song song tùy ý. Tuy nhiên, các phần mở rộng có thể dễ dàng được viết bằng Scala để vượt qua giới hạn này, xem sparkhello.

+0

Liên kết của bạn với sparklyr là sai. Nên là: http://spark.rstudio.com/ – stepthom

+0

'0,6' bây giờ hỗ trợ thực thi mã song song tùy ý. –

4

... thêm vào trên từ Javier ...

Rằng tôi có thể tìm thấy cho đến nay, sparklyr không hỗ trợ làm(), làm cho nó sử dụng chỉ khi bạn muốn làm điều gì cho phép đột biến, tóm tắt, vv Dưới mui xe, sparklyr đang chuyển sang Spark SQL, nhưng không (chưa?) chuyển đổi làm() thành một cái gì đó giống như UDF.

Ngoài ra, tôi có thể tìm thấy cho đến nay, sparklyr không hỗ trợ tidyr, bao gồm unnest().

+0

Có phần mở rộng để giúp đóng khoảng cách 'tidyr': https://mitre.github.io/sparklyr.nested/ –

31

Ưu điểm lớn nhất của SparkR là khả năng chạy trên Spark tùy ý hàm do người dùng định nghĩa bằng văn bản trong R:

https://spark.apache.org/docs/2.0.1/sparkr.html#applying-user-defined-function

Kể từ sparklyr dịch R to SQL, bạn chỉ có thể sử dụng bộ rất nhỏ của các chức năng trong mutate báo cáo:

http://spark.rstudio.com/dplyr.html#sql_translation

Đó thiếu được phần nào giảm bớt bởi Extensions (http://spark.rstudio.com/extensions.html#wrapper_functions).

Ngoài ra, sparklyr là người chiến thắng (theo ý kiến ​​của tôi). Ngoài lợi thế rõ ràng của việc sử dụng các hàm dplyr quen thuộc, sparklyr có API toàn diện hơn cho MLlib (http://spark.rstudio.com/mllib.html) và các Tiện ích mở rộng được đề cập ở trên.

+5

Kể từ' 2017-06-05', phiên bản chưa phát hành của 'sparklyr (0.6.0)' có thể chạy 'mã R được phân phối theo tỷ lệ' thông qua hàm 'spark_apply()' mới được thêm vào. Nguồn: https://github.com/rstudio/sparklyr/blob/d88424d62ccef95d9b95a502532df7ddebab985b/NEWS.md –

4

Là trình bao bọc, có một số giới hạn đối với sparklyr. Ví dụ: sử dụng copy_to() để tạo một khung dữ liệu Spark không lưu giữ các cột được định dạng là ngày tháng. Với SparkR, as.Dataframe() giữ nguyên ngày.

1

Gần đây tôi đã viết tổng quan về các ưu điểm/nhược điểm của SparkR vs sparklyr, có thể quan tâm: https://eddjberry.netlify.com/post/2017-12-05-sparkr-vs-sparklyr/.

Có một số table ở đầu bài đăng cung cấp tổng quan sơ lược về sự khác biệt cho một loạt các tiêu chí.

Tôi kết luận rằng sparklyr thích hợp hơn là SparkR.Những lợi thế đáng chú ý nhất là:

  1. Better thao tác dữ liệu thông qua khả năng tương thích với dpylr
  2. Better quy ước đặt tên chức năng
  3. Better công cụ để nhanh chóng đánh giá mô hình ML
  4. dễ dàng hơn để chạy mã nhị phân trên DataFrame Spark
1

Vì tôi không thấy quá nhiều câu trả lời có lợi cho số sparkR Tôi chỉ muốn đề cập đến đó là một người mới, tôi bắt đầu học cả hai và Tôi thấy rằng api sparkR có liên quan chặt chẽ hơn đến cái tôi sử dụng với tiêu chuẩn scala-spark. Khi tôi nghiên cứu cả hai tôi có nghĩa là tôi muốn sử dụng rstudio và cũng scala, tôi cần phải lựa chọn giữa sparkr và sparklyr. Học sparkR cùng với api scala-spark, có vẻ là ít nỗ lực hơn so với việc học sparklyr khác biệt nhiều hơn ít nhất theo quan điểm của tôi. Tuy nhiên sparklyr xuất hiện mạnh mẽ hơn. Vì vậy, đối với tôi, đó là câu hỏi bạn muốn sử dụng thư viện mạnh mẽ hơn và thường được sử dụng với sự hỗ trợ nhiều hơn từ cộng đồng hay bạn thỏa hiệp và sử dụng api tương tự như trong scala-spark ít nhất là quan điểm của tôi về lựa chọn.

Các vấn đề liên quan