Chủ đề của BDI302c - Dữ liệu lớn

BDI302c - Phần 8: Phân tích dữ liệu với Spark

Spark giữ dữ liệu trung gian trong bộ nhớ thay vì ghi ra đĩa sau mỗi bước, nên hợp với thuật toán lặp nhiều vòng. Đơn vị cơ bản là RDD, tập dữ liệu phân tán, chia thành nhiều phân vùng và dựng lại được khi một máy hỏng nhờ nhớ chuỗi phép biến đổi đã tạo ra nó. Lệnh hành động như count, collect hay take mới thật sự kích hoạt tính toán; các phép biến đổi như map, filter hay reduceByKey chỉ được ghi vào đồ thị kế hoạch và chờ, cách làm gọi là đánh giá lười. Chương trình điều khiển chia việc cho các tiến trình thực thi trên cụm. Bên trên lõi là MLlib cho học máy, Spark Streaming xử lý luồng theo lô nhỏ và Spark SQL với DataFrame. Phần thực hành ghép MongoDB với Spark để phân tích cảm xúc bài đăng, nối sang học máy ở Phần 9.

Xem danh sách câu hỏi12 câu hỏi100% có giải thích

Bắt đầu bằng Chế độ học nếu bạn muốn đáp án và giải thích hiện ngay sau mỗi câu — không bấm giờ, dừng lúc nào cũng được. Chọn Thi thử khi muốn biết mình đang ở đâu: có bấm giờ, chấm điểm ở cuối, và giải thích chỉ mở sau khi nộp.

Học ngân hàng câu hỏi của chủ đề

Luyện tập theo chủ đề này

12Câu hỏi hiện có

Câu hỏi của chủ đề

12/12 câuHết danh sách
1Spark SQL is often used for:4 lựa chọn
AImage processing
BStructured data analysis
CData storage
DData streaming
Lời giải
Đáp án đúng: "Structured data analysis". Spark SQL là mô-đun của Spark để xử lý dữ liệu có cấu trúc (structured data): nó cung cấp DataFrame và Dataset có lược đồ (schema), cho phép viết truy vấn SQL hoặc HiveQL, đọc các định dạng như Parquet, JSON, bảng Hive, và dùng bộ tối ưu Catalyst để lập kế hoạch thực thi hiệu quả. "Image processing" không phải mục đích của Spark SQL; xử lý ảnh cần thư viện chuyên dụng, dù có thể chạy trên Spark. "Data storage" sai vì Spark nói chung, kể cả Spark SQL, là động cơ tính toán, còn việc lưu trữ do HDFS, S3, HBase hay cơ sở dữ liệu khác đảm nhận. "Data streaming" là phạm vi của Spark Streaming và Structured Streaming; Structured Streaming có dựng trên engine của Spark SQL nhưng công dụng tiêu biểu của Spark SQL vẫn là phân tích dữ liệu có cấu trúc.
Mở trang câu hỏi này →
AReal Data Design
BResilient Distributed Dataset
CRemote Data Design
DRelational Data Dump
Lời giải
Đáp án đúng: "Resilient Distributed Dataset". RDD là trừu tượng dữ liệu cốt lõi của Spark: Resilient (bền bỉ) vì mỗi RDD ghi lại dòng dõi (lineage) các phép biến đổi đã tạo ra nó, nên phân vùng bị mất có thể tính lại thay vì phải sao lưu; Distributed (phân tán) vì dữ liệu chia thành các phân vùng nằm trên nhiều nút của cụm; Dataset vì nó là tập bản ghi bất biến, được thao tác qua transformation như map, filter và action như count, collect. "Real Data Design" không phải thuật ngữ của Spark và không nói gì về khả năng chịu lỗi hay phân tán. "Remote Data Design" cũng không tồn tại; dữ liệu của RDD nằm ngay trên các executor của cụm chứ không phải một thiết kế dữ liệu từ xa. "Relational Data Dump" sai vì RDD không có lược đồ quan hệ và không phải bản kết xuất (dump) từ cơ sở dữ liệu; dữ liệu có cấu trúc theo cột là phạm vi của DataFrame trong Spark SQL.
Mở trang câu hỏi này →
AImmutability
BIn-memory
CResilient
DAll of the others
Lời giải
Đáp án đúng: "All of the others". Trong Apache Spark, DataFrame được xây trên nền RDD (Resilient Distributed Dataset, tập dữ liệu phân tán có khả năng phục hồi) nên thừa hưởng cả ba tính chất. "Immutability" đúng: cả RDD lẫn DataFrame đều bất biến, mỗi phép biến đổi như map hay filter tạo ra đối tượng mới thay vì sửa đối tượng cũ. "In-memory" đúng: cả hai được tính toán và có thể lưu đệm (cache) trong bộ nhớ RAM của các executor, giúp nhanh hơn nhiều so với đọc ghi đĩa như MapReduce. "Resilient" đúng: khi một phân vùng bị mất do máy hỏng, Spark dựng lại nó từ lineage (chuỗi phép biến đổi đã ghi lại) mà không cần sao lưu toàn bộ dữ liệu. Vì cả ba đều là điểm chung, chọn riêng một tính chất là chưa đủ.
Mở trang câu hỏi này →
AIn-memory processing
BHigher fault tolerance
CFaster execution
DBatch-only processing
ESupport for multiple languages
FLow latency for iterative algorithms
Lời giải
Đáp án đúng gồm bốn ý: "In-memory processing", "Faster execution", "Support for multiple languages" và "Low latency for iterative algorithms". Apache Spark giữ dữ liệu trung gian trong bộ nhớ dưới dạng RDD (Resilient Distributed Dataset, tập dữ liệu phân tán có khả năng phục hồi) thay vì ghi xuống đĩa HDFS sau mỗi bước như MapReduce; nhờ đó tác vụ chạy nhanh hơn nhiều lần, và các thuật toán lặp như học máy hay PageRank, vốn đọc lại cùng dữ liệu qua nhiều vòng, có độ trễ thấp. Spark còn cung cấp API cho Scala, Java, Python, R cùng shell tương tác, trong khi MapReduce gắn chủ yếu với Java. "Higher fault tolerance" không phải ưu thế: MapReduce chịu lỗi bằng cách chạy lại tác vụ trên dữ liệu đã ghi đĩa, Spark tính lại phân vùng mất nhờ lineage (dòng dõi biến đổi), mức chịu lỗi tương đương chứ không cao hơn. "Batch-only processing" ngược thực tế, vì Spark xử lý được cả lô, luồng, SQL và đồ thị; chỉ xử lý theo lô lại là hạn chế của MapReduce.
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 →
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 →
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 →
AYes
BNo: lines have to be converted into row.
CNo: RDD’s needed to be made relational first.
DNo: RDD’s cannot be converted into DataFrames.
Lời giải
Đáp án đúng: "No: lines have to be converted into row.". DataFrame trong Spark SQL là tập dữ liệu có lược đồ, mỗi phần tử là một đối tượng Row với các cột có tên và kiểu; một RDD đọc từ tệp văn bản chỉ là tập các chuỗi, nên phải dùng map để tách mỗi dòng thành các trường và đóng gói thành Row, sau đó mới gọi createDataFrame hoặc toDF để có DataFrame. "Yes" sai vì RDD các dòng thô chưa có cấu trúc cột, Spark không tự suy ra được lược đồ. "No: RDD’s needed to be made relational first." diễn đạt mơ hồ: không có bước biến RDD thành quan hệ nào riêng, việc cần làm cụ thể là chuyển từng dòng thành Row. "No: RDD’s cannot be converted into DataFrames." sai vì Spark hỗ trợ chuyển RDD sang DataFrame, cả bằng cách suy luận lược đồ từ Row lẫn bằng cách khai báo lược đồ tường minh qua StructType.
Mở trang câu hỏi này →
AJava
BPython
CScala
DAll of the above
Lời giải
Đáp án đúng: "All of the above". Apache Spark được viết bằng Scala và chạy trên máy ảo Java, nên cung cấp API chính thức cho Scala và Java; ngoài ra có PySpark cho Python và SparkR cho R, cùng Spark SQL cho truy vấn kiểu SQL. Nhờ hỗ trợ nhiều ngôn ngữ, nhà khoa học dữ liệu quen Python vẫn khai thác được sức mạnh xử lý phân tán. "Java" đúng nhưng chưa đủ, vì Spark không chỉ hỗ trợ Java. "Python" cũng được hỗ trợ qua PySpark, nhưng chọn riêng nó bỏ sót các ngôn ngữ khác. "Scala" là ngôn ngữ gốc của Spark, song chọn mỗi Scala vẫn thiếu Java và Python. Vì cả ba ngôn ngữ đều được hỗ trợ nên chỉ đáp án gộp mới đầy đủ.
Mở trang câu hỏi này →
ADriver Program
BLocal CPU
CStorage
DSpark Executor
Lời giải
Đáp án đúng: "Driver Program". Trong kiến trúc Spark, Driver Program là tiến trình chạy hàm main của ứng dụng và tạo SparkContext (hay SparkSession); chính tại đây RDD được tạo ra, chẳng hạn qua sc.textFile hay sc.parallelize, các phép biến đổi được ghi lại thành đồ thị DAG, rồi driver chia DAG thành stage và task gửi tới cụm. "Local CPU" sai vì CPU chỉ là phần cứng thực thi lệnh, không phải thành phần của Spark quản lý việc tạo RDD. "Storage" sai vì kho lưu trữ như HDFS hay S3 chỉ chứa dữ liệu nguồn mà RDD đọc vào, bản thân nó không định nghĩa RDD. "Spark Executor" sai vì executor là tiến trình trên các nút worker, nhận task từ driver để tính toán trên từng phân vùng và lưu đệm dữ liệu, tức thực thi trên RDD chứ không khởi tạo RDD.
Mở trang câu hỏi này →
AOther Worker Nodes
BSpark Streaming
CSpark Context
DNone; Stays in the Same Node
ESpark SQL
Lời giải
Đáp án đúng: "Spark Context". collect là một action trong Spark: nó buộc thực thi chuỗi transformation rồi gom toàn bộ phần tử của RDD từ mọi phân vùng trên các worker node về chương trình driver, nơi SparkContext đang chạy, thành một danh sách trong bộ nhớ; vì thế chỉ nên gọi collect khi kết quả đủ nhỏ. "Other Worker Nodes" sai vì dữ liệu chỉ trao đổi giữa các worker khi có shuffle trong các phép như reduceByKey, còn collect đưa dữ liệu về driver. "Spark Streaming" là thư viện xử lý luồng, không phải đích nhận dữ liệu của collect. "None; Stays in the Same Node" sai vì đó là hành vi của transformation hay persist, còn collect bản chất là chuyển dữ liệu về driver. "Spark SQL" là thư viện xử lý dữ liệu có cấu trúc bằng DataFrame và SQL, cũng không phải nơi nhận dữ liệu.
Mở trang câu hỏi này →
AJoining multiple tables using SQL syntax
BRunning machine learning models directly on the database tables
CCreating visualizations directly from SQL queries
DSending email notifications upon query completion
Lời giải
Đáp án đúng: "Joining multiple tables using SQL syntax". Spark SQL có thể đọc bảng PostgreSQL qua nguồn dữ liệu JDBC thành DataFrame, đăng ký thành bảng tạm rồi chạy truy vấn SQL đầy đủ như lọc, gộp nhóm và nối nhiều bảng bằng JOIN, kể cả nối bảng PostgreSQL với dữ liệu từ nguồn khác. "Running machine learning models directly on the database tables" sai vì học máy là việc của MLlib trên DataFrame đã nạp vào Spark, không chạy trực tiếp trong bảng của cơ sở dữ liệu bằng Spark SQL. "Creating visualizations directly from SQL queries" sai vì Spark SQL chỉ trả về dữ liệu, vẽ biểu đồ phải dùng công cụ khác như thư viện Python, notebook hay công cụ báo cáo. "Sending email notifications upon query completion" không phải chức năng của một động cơ truy vấn; gửi thông báo thuộc về hệ thống điều phối hay lập lịch bên ngoài.
Mở trang câu hỏi này →

Đề có câu hỏi của chủ đề này

3 đề chứa ít nhất một câu thuộc chủ đề — mở đề để làm cả bộ, không chỉ từng câu.