BDI302cChưa đo Cập nhật 2 ngày trước

BDI302c - Dữ liệu lớn

BDI302c - Dữ liệu lớn (Big Data) là môn 3 tín chỉ bậc cử nhân của Đại học FPT, không yêu cầu môn học trước. Bài toán đặt ra là: khi nhật ký nhấp chuột của một trang bán hàng, số đo từ hàng nghìn cảm biến hay bài đăng mạng xã hội dồn về nhanh tới mức một máy chủ không còn chứa nổi, cũng không đọc kịp, thì cách làm quen thuộc với một cơ sở dữ liệu trên một máy phải nhường chỗ cho lối nghĩ khác. Câu hỏi đầu tiên là nên lưu dữ liệu ở dạng nào, vì một tài liệu JSON và một đồ thị đặt ra những ràng buộc khác nhau và cho phép những thao tác khác nhau. Chọn hệ quản lý cho dữ liệu lớn thường đồng nghĩa với việc nới tính nhất quán chặt của giao dịch để đổi lấy khả năng chạy trên hàng trăm máy. Tiếp theo là cách tính toán khi dữ liệu đã bị chia thành khối và rải khắp cụm máy: đưa phép tính tới chỗ dữ liệu nằm, viết chương trình đếm từ theo mô hình MapReduce để thấy vì sao dữ liệu trung gian phải đi qua mạng giữa các máy, rồi so với Spark, nơi tập dữ liệu phân tán được giữ trong bộ nhớ và chỉ thật sự được tính khi gặp một lệnh lấy kết quả. Mạng lưới bạn bè hay tuyến giao thông được nhìn như tập đỉnh và cạnh để tìm đường đi ngắn nhất, nút có ảnh hưởng lớn và những cộng đồng gắn kết. Ở mảng học máy, người học huấn luyện cây quyết định trên dữ liệu thật, so độ chính xác trên tập huấn luyện với tập kiểm định để nhận ra mô hình học thuộc lòng dữ liệu, đọc ma trận nhầm lẫn để biết nó hay nhầm lớp nào sang lớp nào, và trước đó là thăm dò, làm sạch, bù giá trị thiếu, bởi một mô hình chỉ tốt bằng dữ liệu đưa vào nó. Khi dữ liệu về một khách hàng nằm rải ở nhiều nguồn, người học tập ghép lược đồ và nhận ra những bản ghi khác nhau thật ra chỉ cùng một người. Các công cụ đi kèm gồm Neo4j, Hive, KNIME, HDFS, MongoDB, Spark SQL, Pig và YARN. Học xong, người học chọn được mô hình lưu trữ và nền tảng xử lý hợp với khối lượng, tốc độ của dữ liệu đang có, viết được một tác vụ MapReduce hay Spark đơn giản, đánh giá một mô hình phân loại bằng con số thay vì cảm giác, và biến một bài toán về quan hệ giữa các đối tượng thành truy vấn trên đồ thị.

175Câu hỏi
3Bộ đề
13Chủ đề

Câu hỏi của môn

124/175 câuCòn 51
APrevents missed opportunities.
BMore accurate.
CMore expensive to batch process.
DBatch processing is an older method that is not as accurate as real-time processing.
Lời giải
Đáp án đúng: "Prevents missed opportunities.". Xử lý thời gian thực (real-time) phân tích dữ liệu ngay khi nó tới, nên giá trị đến từ tính kịp thời: phát hiện gian lận thẻ trước khi giao dịch hoàn tất, gợi ý sản phẩm khi khách còn trên trang, cảnh báo sự cố khi cảm biến vừa báo; chờ xử lý theo lô cuối ngày thì cơ hội hành động đã trôi qua. "More accurate." sai vì thời gian thực không làm kết quả chính xác hơn; xử lý theo lô trên toàn bộ dữ liệu thậm chí thường chính xác hơn. "More expensive to batch process." sai vì xử lý theo lô thường rẻ hơn tính toán liên tục trên luồng, nên chi phí không phải lý do. "Batch processing is an older method that is not as accurate as real-time processing." sai vì lô và luồng là hai cách bổ trợ nhau cho các bài toán khác nhau; xử lý theo lô không kém chính xác chỉ vì ra đời trước.
Mở trang câu hỏi này →
ADecision tree
BNaïve Bayes
CkNN
DSVM
Lời giải
Đáp án đúng: "kNN". Thuật toán k láng giềng gần nhất (k-nearest neighbors) là thuật toán học lười (lazy learner): nó không dựng mô hình trước mà chỉ lưu lại toàn bộ dữ liệu huấn luyện, đến khi cần phân loại một mẫu mới mới tính khoảng cách tới mọi điểm, lấy k điểm gần nhất và bỏ phiếu theo nhãn, nên không có pha huấn luyện thật sự. "Decision tree" phải học từ dữ liệu bằng cách chọn thuộc tính tách tốt nhất theo độ đo như Gini hay information gain để dựng cây trước khi dự đoán. "Naïve Bayes" phải ước lượng xác suất tiên nghiệm của từng lớp và xác suất có điều kiện của từng thuộc tính từ dữ liệu huấn luyện. "SVM" phải giải bài toán tối ưu để tìm siêu phẳng phân tách có lề lớn nhất, đây là pha huấn luyện tốn kém.
Mở trang câu hỏi này →
AFP-Growth
BApriori
CkNN
DPCA
Lời giải
Đáp án đúng: "kNN". kNN (k-Nearest Neighbors, k láng giềng gần nhất) là thuật toán phân lớp (classification) có giám sát: với một mẫu mới, nó tìm k mẫu huấn luyện gần nhất theo một độ đo khoảng cách như Euclid, rồi gán nhãn theo lớp chiếm đa số trong k láng giềng đó. "FP-Growth" là thuật toán khai phá tập phổ biến và luật kết hợp, xây cây FP-tree để tìm các mặt hàng hay được mua cùng nhau mà không cần nhãn lớp. "Apriori" cũng thuộc khai phá luật kết hợp, sinh tập ứng viên theo từng kích thước và cắt tỉa dựa trên tính chất mọi tập con của một tập phổ biến đều phổ biến. "PCA" (Principal Component Analysis, phân tích thành phần chính) là kỹ thuật giảm chiều không giám sát, chiếu dữ liệu lên các hướng có phương sai lớn nhất, không dự đoán nhãn lớp.
Mở trang câu hỏi này →
ARemove outliers
BUse more variables
CGive equal importance to variables
DReduce support
Lời giải
Đáp án đúng: "Give equal importance to variables". Các thuật toán phân cụm như k-means dựa vào khoảng cách giữa các điểm, thường là khoảng cách Euclid; nếu một biến có thang đo lớn, ví dụ thu nhập tính bằng triệu, và biến khác có thang nhỏ như số con, thì biến thang lớn sẽ áp đảo khoảng cách và quyết định cụm. Chuẩn hoá (normalization) như min-max hay z-score đưa các biến về cùng thang để mỗi biến đóng góp ngang nhau. "Remove outliers" là một bước tiền xử lý khác; chuẩn hoá không loại điểm nào, và chuẩn hoá min-max còn bị ngoại lai làm lệch. "Use more variables" không liên quan, vì chuẩn hoá giữ nguyên số biến. "Reduce support" lẫn sang khái niệm support (độ hỗ trợ) của phân tích luật kết hợp, không phải phân cụm.
Mở trang câu hỏi này →
AHDFS
BMapReduce
CYARN
DSpark
Lời giải
Đáp án đúng: "YARN". Hadoop 2 có ba thành phần cốt lõi: HDFS lo lưu trữ, YARN lo quản lý tài nguyên và lập lịch, MapReduce lo mô hình xử lý. YARN gồm ResourceManager trên nút chủ theo dõi CPU, bộ nhớ của cả cụm và cấp container, cùng NodeManager trên mỗi nút giám sát tài nguyên tại chỗ. "HDFS" sai vì đó là hệ thống tệp phân tán, chia tệp thành khối và nhân bản trên các DataNode, thuộc tầng lưu trữ. "MapReduce" sai vì từ Hadoop 2 nó chỉ là mô hình lập trình xử lý dữ liệu chạy trên YARN, không còn tự quản lý tài nguyên như thời JobTracker. "Spark" là động cơ xử lý dữ liệu trong bộ nhớ, có thể chạy trên YARN như một ứng dụng, chứ không phải thành phần của Hadoop chịu trách nhiệm cấp phát tài nguyên.
Mở trang câu hỏi này →
ANeo4j
BMongoDB
CRedis
DMySQL
Lời giải
Đáp án đúng: "MongoDB". MongoDB là cơ sở dữ liệu NoSQL hướng tài liệu (document store): mỗi bản ghi là một tài liệu dạng BSON giống JSON, có thể chứa trường lồng nhau và mảng, các tài liệu trong cùng collection không bắt buộc cùng lược đồ, phù hợp dữ liệu bán cấu trúc. "Neo4j" là cơ sở dữ liệu đồ thị, mô hình hoá dữ liệu thành nút, quan hệ và thuộc tính, truy vấn bằng Cypher. "Redis" là kho key-value trong bộ nhớ, ánh xạ khoá tới giá trị hoặc cấu trúc dữ liệu đơn giản, dùng nhiều làm bộ đệm. "MySQL" là hệ quản trị cơ sở dữ liệu quan hệ, lưu dữ liệu trong bảng có lược đồ cố định và truy vấn bằng SQL, không thuộc nhóm NoSQL.
Mở trang câu hỏi này →
111What does IaaS offer?4 lựa chọn
AHardware Only
BComputing Environment
CSoftware On-Demand
DLOud software
Lời giải
Đáp án đúng: "Hardware Only". IaaS (Infrastructure as a Service, hạ tầng như một dịch vụ) là tầng dưới cùng của mô hình đám mây: nhà cung cấp cho thuê hạ tầng phần cứng đã ảo hoá gồm máy ảo, ổ lưu trữ, mạng, còn hệ điều hành, runtime và ứng dụng do người dùng tự cài và tự quản lý, ví dụ Amazon EC2. Dễ nhầm nhất là "Computing Environment": môi trường tính toán gồm hệ điều hành, runtime, thư viện, công cụ phát triển dựng sẵn là thứ PaaS (Platform as a Service) cung cấp, không phải IaaS, vì với IaaS người dùng chỉ nhận phần cứng ảo hoá trống và tự dựng môi trường phía trên. "Software On-Demand" là SaaS, phần mềm hoàn chỉnh dùng ngay qua mạng mà không phải cài đặt hay quản lý gì. "LOud software" không phải thuật ngữ của điện toán đám mây và không ứng với tầng dịch vụ nào.
Mở trang câu hỏi này →
112In association analysis, confidence is:4 lựa chọn
AFrequency of rule
BSupport of consequence
Csupp(X ∪ Y) / supp(X)
Dsupp(X) / supp(Y)
Lời giải
Đáp án đúng: "supp(X ∪ Y) / supp(X)". Trong phân tích luật kết hợp, confidence (độ tin cậy) của luật X suy ra Y là xác suất có điều kiện giao dịch chứa Y khi đã chứa X, tính bằng support của tập gồm cả X và Y chia cho support của X. Ví dụ trong 100 giao dịch có 40 giao dịch chứa bánh mì và 30 giao dịch chứa cả bánh mì lẫn sữa thì confidence của luật bánh mì suy ra sữa là 30 chia 40, bằng 0,75. "Frequency of rule" là định nghĩa của support của luật, tức tỉ lệ giao dịch chứa cả X và Y, không chia cho support của X. "Support of consequence" chỉ là support của Y, dùng trong mẫu số của chỉ số lift chứ không phải confidence. "supp(X) / supp(Y)" là tỉ số giữa hai support đơn lẻ, không phản ánh việc X và Y cùng xuất hiện nên không đo độ tin cậy của luật.
Mở trang câu hỏi này →
AMongoDB
BMySQL
COracle
DPostgreSQL
Lời giải
Đáp án đúng: "MongoDB". MongoDB là cơ sở dữ liệu NoSQL hướng tài liệu: mỗi tài liệu lưu dạng BSON giống JSON, các tài liệu trong cùng một collection không bắt buộc có cùng tập trường hay cùng kiểu, nên có thể thêm trường mới bất cứ lúc nào mà không cần sửa lược đồ; vì vậy nó được gọi là không lược đồ (schema-less), hay đúng hơn là lược đồ linh hoạt. "MySQL" sai vì là hệ quản trị cơ sở dữ liệu quan hệ, bảng phải định nghĩa cột và kiểu trước bằng CREATE TABLE. "Oracle" cũng là RDBMS với lược đồ cố định, muốn thêm cột phải chạy ALTER TABLE. "PostgreSQL" là cơ sở dữ liệu quan hệ có lược đồ chặt; nó hỗ trợ cột JSONB để chứa dữ liệu bán cấu trúc, nhưng bảng vẫn có lược đồ khai báo trước nên không phải hệ không lược đồ.
Mở trang câu hỏi này →
A32 MB
B64 MB
C128 MB
D256 MB
Lời giải
Đáp án đúng: "128 MB". HDFS chia mỗi tệp thành các khối (block) lớn rồi phân tán và sao lưu chúng trên các DataNode; từ Hadoop 2.x kích thước khối mặc định là 128 MB, đặt qua tham số dfs.blocksize. Khối lớn giúp giảm số siêu dữ liệu NameNode phải giữ trong bộ nhớ và giảm thời gian tìm kiếm so với thời gian truyền dữ liệu. "32 MB" chưa từng là mặc định của HDFS, khối nhỏ như vậy làm số khối tăng vọt và đè nặng NameNode. "64 MB" là kích thước mặc định của Hadoop 1.x, đã được tăng lên ở phiên bản 2.x mà câu hỏi nhắc tới. "256 MB" là giá trị quản trị viên thường tự cấu hình cho cụm có tệp rất lớn, nhưng không phải mặc định. Ví dụ một tệp 300 MB sẽ được chia thành hai khối 128 MB và một khối 44 MB.
Mở trang câu hỏi này →
115What are mediated schemas?4 lựa chọn
ASchemas created from customer info.
BSchemas created entirely from attribute grouping.
CA type of probabilistic schema mapping.
DSchema created from integrating two or more schemas.
Lời giải
Đáp án đúng: "Schema created from integrating two or more schemas.". Lược đồ trung gian (mediated schema) là lược đồ hợp nhất dựng từ việc tích hợp nhiều lược đồ nguồn, ví dụ ghép lược đồ bệnh nhân của hai bệnh viện thành một lược đồ chung; người dùng truy vấn trên lược đồ này và hệ thống dịch truy vấn xuống từng nguồn qua các ánh xạ. "Schemas created from customer info." gắn lược đồ với một loại dữ liệu cụ thể, trong khi lược đồ trung gian có thể dựng cho bất kỳ miền nào. "Schemas created entirely from attribute grouping." quá hẹp: nhóm thuộc tính (attribute grouping) chỉ là một bước giúp xác định thuộc tính nào nên gộp chung khi dựng lược đồ trung gian, không phải toàn bộ quá trình. "A type of probabilistic schema mapping." nhầm vai trò: ánh xạ lược đồ xác suất là các ánh xạ có gán xác suất nối lược đồ nguồn với lược đồ trung gian, còn lược đồ trung gian là đích của các ánh xạ đó.
Mở trang câu hỏi này →
Adb.userIndex.find({email:{$gt:24}}, {_id:0})
Bdb.email.find({userIndex:{$gt:24}}, {email:1, _id:0})
Cdb.userIndex.find({email:{$lte:24}}, {_id:0})
Ddb.email.find({userIndex:{$lte:24}}, {email:1, _id:0})
Lời giải

Đáp án đúng: "

Lời giải
db.email.find({
  userIndex:{
    $gt:24
  }
}

, {email:1, _id:0})". Trong MongoDB, lệnh find nhận hai đối số: điều kiện lọc (query) và phép chiếu (projection). Yêu cầu là lọc theo trường userIndex lớn hơn 24 nên điều kiện phải là userIndex với toán tử $gt, và chỉ lấy email nên projection đặt email bằng 1 và tắt _id bằng 0. "

Lời giải
db.userIndex.find({
  email:{
    $gt:24
  }
}

, {_id:0})" đặt điều kiện lên email, so một địa chỉ thư với số 24, và projection trả mọi trường trừ _id. "

Lời giải
db.userIndex.find({
  email:{
    $lte:24
  }
}

, {_id:0})" vừa lọc nhầm trường email vừa dùng $lte (nhỏ hơn hoặc bằng), ngược chiều yêu cầu. "

Lời giải
db.email.find({
  userIndex:{
    $lte:24
  }
}

, {email:1, _id:0})" đúng trường và đúng phép chiếu nhưng $lte lấy các chỉ số từ 24 trở xuống, trái với điều kiện lớn hơn 24.

Mở trang câu hỏi này →
117What is a triplet in GraphX?4 lựa chọn
AA type of data to contain vertex info.
BA type of data to contain the information on connections between vertices and edges.
CA type of data to contain both edge and vertex info.
DA type of data to contain edge info.
Lời giải
Đáp án đúng: "A type of data to contain both edge and vertex info.". Trong Spark GraphX, đồ thị gồm VertexRDD chứa thuộc tính đỉnh và EdgeRDD chứa thuộc tính cạnh; triplet là khung nhìn ghép chúng lại: mỗi phần tử EdgeTriplet mang mã và thuộc tính của đỉnh nguồn (srcAttr), đỉnh đích (dstAttr) cùng thuộc tính của cạnh nối chúng (attr), lấy ra qua graph.triplets. Nhiều tài liệu ôn tập lại ghi "A type of data to contain the information on connections between vertices and edges." vì triplet nghe như mô tả mối nối; nhưng theo tài liệu GraphX, triplet không chứa quan hệ giữa đỉnh với cạnh mà chứa trọn dữ liệu của một cạnh và hai đỉnh đầu mút, nên mô tả đúng là chứa cả thông tin cạnh lẫn đỉnh. "A type of data to contain vertex info." chỉ đúng với VertexRDD, thiếu phần cạnh. "A type of data to contain edge info." chỉ đúng với EdgeRDD, thiếu thuộc tính hai đỉnh mà triplet gắn thêm vào.
Mở trang câu hỏi này →
AHDFS and through the system directory with the “cd” terminal command.
BHDFS and through the “hadoop fs” command.
CThe local file system and through the “hadoop fs” command.
DThe local file system and through the directory with the “cd” terminal command.
Lời giải
Đáp án đúng: "HDFS and through the “hadoop fs” command.". Hàm saveAsTextFile của Spark ghi RDD ra đường dẫn được chỉ định, ở đây đường dẫn có tiền tố hdfs nên dữ liệu được ghi vào hệ tệp phân tán HDFS; coalesce(1) gộp về một phân vùng nên thư mục outputDir chứa một tệp part-00000 cùng tệp đánh dấu _SUCCESS. Vì HDFS không gắn vào cây thư mục cục bộ, muốn xem phải dùng lệnh hadoop fs như hadoop fs -ls hay hadoop fs -cat. Phương án "HDFS and through the system directory with the “cd” terminal command." đúng nơi ghi nhưng sai cách truy cập, lệnh cd chỉ đi trong hệ tệp cục bộ của máy. "The local file system and through the “hadoop fs” command." sai nơi ghi vì tiền tố hdfs không trỏ về đĩa cục bộ. "The local file system and through the directory with the “cd” terminal command." sai cả nơi ghi lẫn cách truy cập.
Mở trang câu hỏi này →
AYes
BNo
Lời giải
Đáp án đúng: "No". K-Means bắt đầu bằng việc chọn ngẫu nhiên k tâm cụm ban đầu, rồi lặp hai bước: gán mỗi điểm vào tâm gần nhất và tính lại tâm bằng trung bình các điểm trong cụm, cho tới khi hội tụ. Thuật toán chỉ bảo đảm hội tụ về một cực tiểu cục bộ của tổng bình phương khoảng cách trong cụm, và cực tiểu đó phụ thuộc vào tâm khởi tạo, nên hai lần chạy với khởi tạo ngẫu nhiên khác nhau có thể cho cách phân cụm khác nhau. Vì vậy trong thực hành người ta chạy nhiều lần rồi chọn kết quả có tổng sai số nhỏ nhất, hoặc dùng k-means++ để khởi tạo tốt hơn. "Yes" chỉ đúng khi cố định hạt giống ngẫu nhiên hoặc dùng cùng một bộ tâm khởi tạo, điều mà câu hỏi không giả định.
Mở trang câu hỏi này →
ATo provide machine learning capabilities.
BTo manage distributed graph computation.
CTo process structured data using SQL queries.
DTo perform real-time streaming analytics.
Lời giải
Đáp án đúng: "To process structured data using SQL queries.". Spark SQL là mô-đun của Apache Spark để xử lý dữ liệu có cấu trúc: nó cung cấp DataFrame và Dataset, cho phép viết truy vấn SQL hoặc dùng API tương đương, đọc nhiều nguồn như Parquet, JSON, Hive, JDBC, và dùng bộ tối ưu Catalyst để lập kế hoạch thực thi hiệu quả. "To provide machine learning capabilities." là việc của MLlib, thư viện học máy của Spark. "To manage distributed graph computation." là việc của GraphX (hoặc GraphFrames), mô-đun tính toán đồ thị phân tán. "To perform real-time streaming analytics." là việc của Spark Streaming và Structured Streaming; Structured Streaming dựng trên nền Spark SQL nhưng mục đích chính của Spark SQL vẫn là truy vấn dữ liệu có cấu trúc, còn phân tích dòng là mô-đun khác.
Mở trang câu hỏi này →
AHive
BSpark
CPig
DSqoop
Lời giải
Đáp án đúng: "Spark". Apache Spark là động cơ xử lý hợp nhất: phần lõi với RDD và DataFrame xử lý theo lô (batch), còn Spark Streaming chia luồng dữ liệu thành các lô nhỏ (micro-batch) và Structured Streaming xử lý luồng trên cùng API DataFrame, nên một nền tảng chạy được cả hai kiểu, dùng chung mã và bộ nhớ đệm. "Hive" sai vì là kho dữ liệu truy vấn bằng HiveQL, dịch thành các tác vụ theo lô trên MapReduce, Tez hoặc Spark, không xử lý luồng thời gian thực. "Pig" sai vì Pig Latin cũng được biên dịch thành các tác vụ theo lô, dùng cho biến đổi dữ liệu kiểu ETL. "Sqoop" sai vì nó chỉ chuyển dữ liệu hàng loạt giữa Hadoop và cơ sở dữ liệu quan hệ, không phải nền tảng xử lý.
Mở trang câu hỏi này →
AExecution model, Latency, Scalability, Programming Language, Fault Tolerance
BCoordination, Latency, Productivity, Speed, Fault Tolerance
CExecution model, Speed, Scalability, Flexibility, Fault Tolerance
DCoordination, Latency, Productivity, Flexibility, Fault Tolerance
Lời giải
Đáp án đúng: "Execution model, Latency, Scalability, Programming Language, Fault Tolerance". Khi so sánh các hệ xử lý dữ liệu lớn như MapReduce, Spark, Flink, Storm, người ta xét năm tiêu chí: mô hình thực thi (theo lô, theo luồng, cách biểu diễn luồng xử lý), độ trễ (thời gian từ khi dữ liệu vào tới khi có kết quả), khả năng mở rộng (thêm máy để xử lý nhiều dữ liệu hơn), ngôn ngữ lập trình được hỗ trợ (Java, Scala, Python, SQL) và khả năng chịu lỗi (khôi phục khi nút hỏng). Phương án "Coordination, Latency, Productivity, Speed, Fault Tolerance" lẫn vào phối hợp, năng suất và tốc độ, trong đó tốc độ trùng ý với độ trễ. Phương án "Execution model, Speed, Scalability, Flexibility, Fault Tolerance" thay độ trễ bằng tốc độ và thay ngôn ngữ lập trình bằng tính linh hoạt, là những khái niệm chung chung. Phương án "Coordination, Latency, Productivity, Flexibility" lại bỏ mất mô hình thực thi và khả năng mở rộng, hai tiêu chí quan trọng nhất.
Mở trang câu hỏi này →
ARequires nodes and multiple machines.
BBottleneck using HDFS.
CMap and Reduce Based Computation.
DUnable to support machine learning.
ENo interactive shell and streaming.
FJava support only.
Lời giải
Đáp án đúng gồm bốn ý: "Bottleneck using HDFS.", "Map and Reduce Based Computation.", "No interactive shell and streaming." và "Java support only.". Học máy thường dùng thuật toán lặp, đọc lại cùng dữ liệu qua nhiều vòng; với Hadoop MapReduce, mỗi vòng phải đọc từ HDFS và ghi kết quả trung gian xuống đĩa, gây nghẽn vào ra. Mô hình chỉ gồm hai pha Map và Reduce cứng nhắc nên khó diễn đạt thuật toán nhiều bước. Hadoop không có shell tương tác để thử nghiệm, khám phá dữ liệu, không hỗ trợ xử lý luồng, và API gốc gắn chủ yếu với Java; đó là những lý do Spark ra đời. "Requires nodes and multiple machines." không phải nhược điểm riêng: mọi nền tảng phân tán kể cả Spark đều chạy trên cụm nhiều nút, và đó chính là cách mở rộng quy mô. "Unable to support machine learning." quá tuyệt đối, vì Hadoop vẫn chạy được học máy, ví dụ với thư viện Mahout, chỉ là chạy kém hiệu quả.
Mở trang câu hỏi này →
AProject, Ship, Reduce
BProject, Decompose, Send
CIndex, Join, Display
DQuery, Join, Display
Lời giải
Đáp án đúng: "Project, Ship, Reduce". Semi-join (nửa phép nối) là kỹ thuật giảm lượng dữ liệu truyền qua mạng khi nối hai quan hệ R và S nằm ở hai trạm khác nhau của cơ sở dữ liệu phân tán. Bước Project chiếu R lên các thuộc tính nối để có tập giá trị khoá gọn nhẹ; bước Ship gửi tập giá trị này sang trạm chứa S; bước Reduce dùng nó để lọc S, chỉ giữ các bộ có giá trị khớp, rồi chỉ phần S đã thu gọn mới phải gửi đi để hoàn tất phép nối. "Project, Decompose, Send" có bước phân rã (decompose) không thuộc semi-join, vốn không tách quan hệ ra. "Index, Join, Display" mô tả quy trình truy vấn chung là lập chỉ mục, nối rồi hiển thị, không có bước gửi giá trị nối sang trạm khác. "Query, Join, Display" chỉ là trình tự chạy một truy vấn, bỏ qua đúng bước gửi và thu gọn làm nên semi-join.
Mở trang câu hỏi này →