Thứ Tư, 22 tháng 11, 2017

Đam mê Big Data nên học gì? Scala, Python, R hay Java?



Những người đam mê Big Data thường phải học Scala, Python, R hoặc Java để lập trình trong Hadoop & Spark. Ngôn ngữ cuối cùng được lựa chọn dựa trên hiệu quả của các giải pháp chức năng cho các nhiệm vụ.

Python và Java đã có mặt trên thị trường trong hơn hai thập kỷ. Scala mặc dù được phát minh vào năm 2006 đã được sử dụng rộng rãi hơn từ 4-5 năm qua và Spark đã được phát hành chỉ vài năm trước vào giữa năm 2014. Do đó, khi mọi người bắt đầu lập trình Hadoop, họ chủ yếu chọn Java hoặc Python. Tuy nhiên trong thị trường ngày nay, chúng ta có nhiều lựa chọn hơn vài năm trở lại đây.

Tại sao là Python?



Mặc dù Hadoop được thực hiện trong Java, các ứng dụng MapReduce không cần phải được viết bằng Java, nó có thể được viết bằng Python, R hoặc thậm chí là C ++. Mặc dù nhiều người vẫn có thể dính vào java vì nó nhanh hơn Python

Java = Statically typed + JIT compile + --server flag để tích cực biên dịch mã chạy..

Đối số cổ điển của Java vs. Python có thể tiếp tục.

Một trong những khác biệt quan trọng nhất là chúng ta không phải biên dịch code bằng Python vì nó là một ngôn ngữ kịch bản. Điều này có thể làm cho sự phát triển tương tác của sự phân tích, làm cho việc bảo trì và sửa các ứng dụng trong các môi trường sản xuất đơn giản hơn trong nhiều trường hợp, làm cho code dễ hiểu hơn và dễ đọc hơn, và nhiều hơn thế nữa.

Python với Apache Hadoop được sử dụng để lưu trữ, xử lý và phân tích bộ dữ liệu cực kỳ lớn. Đối với các ứng dụng phát trực tuyến, chúng tôi sử dụng Python để viết bản đồ giảm các chương trình để chạy trên cụm Hadoop. Ngày nay, có rất nhiều dự án mã nguồn mở hỗ trợ Hadoop bằng Python. Python hỗ trợ các dự án hệ sinh thái Hadoop khác và các thành phần của nó như HBase, Hive, Spark, Storm, Flume, Accumulo, và một số khác.

Nếu sử dụng java, Hadoop yêu cầu môi trường thời gian chạy Java (JRE) 1.6 trở lên, vì Hadoop được phát triển trên đầu trang các API của Java.

 Java Vs Python


 Feature
 Java
 Python
 Execution
 Thực hiện nhanh
 Chậm hơn
 Typing
 Nhập tĩnh
 Gõ động
 Blooking  methods
 Traditional braces to start and  end blocks
 It uses indentation of  blocks
 Đơn giản và  nhỏ gọn
 Chi tiết
 Đơn giản và nhỏ gọn
 Ngôn ngữ
 Thích hợp nhất cho ngôn ngữ  thực hiện cấp thấp
 Thích hợp là ngôn  ngữ "keo"
 Nền tảng
 Các ứng dụng hoạt động trên  nhiều nền tảng khác nhau
 Python không hỗ trợ  tính năng này.

R Vs Python



Cả hai Python và R là một trong những ngôn ngữ phổ biến nhất để phân tích dữ liệu, và có người ủng hộ và đối thủ của họ. Trong khi Python thường được ngưỡng mộ vì là một ngôn ngữ có mục đích chung với một cú pháp dễ hiểu và chủ yếu sử dụng trong phát triển web, chức năng của R được phát triển cùng với các nhà thống kê và khoa học dữ liệu, thường được sử dụng cho việc hiển thị dữ liệu. Một trong những thế mạnh chính của R là cộng đồng khổng lồ cung cấp hỗ trợ thông qua danh sách gửi thư, tài liệu do người dùng đóng góp và nhóm Stack Overflow hoạt động rất tích cực.

Apache Spark


Không giống như Hadoop, người anh em họ nhanh hơn Apache Spark framework hỗ trợ nhiều ngôn ngữ: Java, Scala, R và Python. Tuy nhiên, chúng tôi sẽ loại bỏ Java ra khỏi cuộc thảo luận.

Tại sao?


So với Python và Scala, Java quá chi tiết. Để đạt được mục tiêu tương tự, bạn phải viết thêm nhiều dòng mã.
Java 8 làm cho cuộc sống đơn giản hơn bằng cách giới thiệu các biểu thức Lambda, nhưng nó vẫn không sắc nét như Python và Scala.
Quan trọng nhất, Java không hỗ trợ trình bao tương tác REPL (Read-Evaluate-Print Loop), một trình biên dịch lớn khi chọn một ngôn ngữ lập trình để xử lý dữ liệu lớn.


Python Vs Scala


Bây giờ nó đi xuống đến Python vs Scala. Cả hai đều có cú pháp ngắn gọn. Cả hai đều là hướng đối tượng cộng với chức năng. Cả hai đều có cộng đồng ủng hộ nhiệt huyết.

Nhưng những điểm mà Scala vượt qua Python:



  1. Python nói chung chậm hơn so với Scala. Nếu bạn có logic xử lý đáng kể được viết bằng mã số của riêng bạn, Scala chắc chắn sẽ cung cấp hiệu suất tốt hơn.
  2. Scala là gõ tĩnh.
  3. Apache Spark được xây dựng trên Scala
  4. Khi wrapper Python gọi các mã Spark bên dưới được viết bằng Scala chạy trên một JVM, dịch giữa hai môi trường và ngôn ngữ khác nhau có thể là nguồn lỗi và vấn đề khác.
  5. Cuối cùng nhưng không kém phần quan trọng, bởi vì Spark được thực hiện trong Scala, sử dụng Scala cho phép bạn truy cập các tính năng mới nhất. Hầu hết các tính năng lần đầu tiên có trên Scala và sau đó là Python.



Tóm lại


Kết luận "Scala là nhanh nhất và vừa dễ sử dụng, trong khi Python chậm hơn nhưng rất dễ sử dụng."

Apache Spark hiện hỗ trợ nhiều ngôn ngữ lập trình, bao gồm Java, Scala, R và Python. Ngôn ngữ nào để lựa chọn cho dự án Spark là một câu hỏi phổ biến được hỏi trên các diễn đàn khác nhau và danh sách gửi thư.

Câu trả lời cho câu hỏi khác nhau tùy từng trường hợp. Mỗi người phải trả lời câu hỏi dựa trên kỹ năng của mình, các trường hợp sử dụng, và cuối cùng là sở thích cá nhân. Nhưng nếu bạn hỏi tôi, Scala là ngôn ngữ của tôi được lựa chọn.

Share:

0 nhận xét:

Đăng nhận xét

Fanpage

Tổng số lượt xem trang