Tác giả: T.M.L

Viết Unit Test cho chương trình PySpark

Viết Unit Test cho chương trình PySpark

Một số bài viết trước trên blog VietnamLab đã giới thiệu về Apache Spark, một framework rất mạnh phục vụ cho việc tính toán phân tán, đồng thời cũng hỗ trợ rất nhiều các thuật toán Machine Learning. PySpark là giao diện Python hỗ trợ việc viết chương trình Spark sử dụng ngôn ngữ Python (dễ học và dễ dùng hơn nhiều so với Scala). Tuy nhiên việc viết Unit Test tưởng chừng như rất đơn giản đối với các chương trình Python thì lại khá phức tạp và rắc rối đối với các chương trình PySpark (do bản chất ... »

Sử dụng PySpark để cập nhật dữ liệu cho bảng có cấu trúc nested trên Hive

Sử dụng PySpark để cập nhật dữ liệu cho bảng có cấu trúc nested trên Hive

Trong quy trình xử lý big data hiện tại, Spark và Hive thường được sử dụng chung với nhau: Spark đóng vai trò là engine xử lý data Hive là datawarehouse lưu trữ dữ liệu đã xử lý từ Spark Thông thường, việc cập nhật dữ liệu từ Spark vào bảng trên Hive khá đơn giản, chỉ mất 1 vài dòng code, tuy nhiên trong trường hợp khi bảng trên Hive có cấu trúc phức tạp như 1 trường có cấu trúc nested thì việc xử lý sẽ cần tốn công một chút. Bài viết này sẽ cung cấp 2 ... »

Lập trình BloomFilter sử dụng Scala

Lập trình BloomFilter sử dụng Scala

Ở bài blog trước, chúng ta đã tìm hiểu các khái niệm cơ bản về Bloom Filter (Giới thiệu về Bloom Filter), ở bài blog lần này, ta sẽ sử dụng Scala để lập trình 1 Bloom Filter đơn giản sử dụng 2 hàm hash là  MurmurHash và hàm hashCode của mỗi object của Scala. Trước tiên là khung của class BloomFilter và companion object cho class này class BloomFilter[A](val length: Int, val numHash: Int) { def this(length: Int) = this(length, 3) private val bitArr = new util.BitSet(length) } object BloomFilter { def apply[A](length: Int, numHash: Int) ... »

Giới thiệu về Bloom filter

Giới thiệu về Bloom filter

Bloom filter là gì? Bloom filter là 1 cấu trúc dữ liệu xác suất dùng để check xem 1 phần tử có thuộc 1 tập dữ liệu hay không một cách nhanh chóng và tiết kiệm bộ nhớ. Bloom filter chỉ hỗ trợ 2 phương thức tương tác là: Test: Test xem 1 phần tử có thuộc 1 tập dữ liệu đã add vào bloom filter hay không. Nếu kết quả trả về là “không” thì kết quả này chính xác 100%. Tuy nhiên khi kết quả trả về là “có” thì xác suất kết quả này không chính xác ... »

Lập trình bất đồng bộ trong Scala với Future

Lập trình bất đồng bộ trong Scala với Future

Scala có thể sử dụng được tất cả các thư viện của Java nên ta hoàn toàn có thể sử dụng các tính năng về lập trình song song của Java (Thread, Runnable…) để phục vụ cho việc xử lý bất đồng bộ khi code Scala. Tuy nhiên, bản thân Scala cũng có những tính năng phục vụ riêng cho việc lập trình bất đối xứng với API ở mức abstract hơn, đồng thời dễ dàng tích hợp với các API mà Scala cung cấp. Một tính năng có sẵn trong standard library của Scala là Future, ngoài ra còn ... »

Tăng hiệu năng khi sử dụng join trong Apache Spark

Tăng hiệu năng khi sử dụng join trong Apache Spark

Trong Apache Spark, khi muốn kết hợp 2 RDD (Resilient Distributed Dataset) với định dạng (key, value), tổng hợp những dữ liệu có cùng key rồi tính toán trên những giá trị của dữ liệu đó để có 1 data set cuối cùng cũng với định dạng (key, value) thì sử dụng hàm join là một trong những sự lựa chọn thông dụng nhất. Tuy nhiên, khác với khi sử dụng hàm join trong SQL hay các hệ quản trị cơ sỡ dữ liệu không phân tán khác, vì Spark theo cấu trúc phân tán (data được chia thành các ... »

Tìm hiểu về Implicit trong Scala

Tìm hiểu về Implicit trong Scala

Với nhiều bạn mới tìm hiểu về Scala thì đọc code trong một số thư viện hoặc chương trình opensource thì sẽ thấy xuất hiện rất nhiều keyword implicit. Vậy implicit là gì, đóng vai trò gì trong ngôn ngữ Scala. Chúng ta hãy cùng điểm qua 2 khái niệm implicit thông dụng và thường gặp nhất trong Scala 1. Implicit parameter Chúng ta hãy cùng thử xem xét đoạn code sau: def payLoan(amount: Float)(implicit interestRate: Float): Float = amount + amount * interestRate payLoan(2201100)(3.0F) // Success payLoan(2201100) // Will cause error Ai cũng dễ dàng đoán được là ... »