MST
星途 面试题库

面试题:Ruby中大数据处理框架应用之数据读取

假设使用Ruby的某大数据处理框架处理数据,数据源是一个超大的CSV文件,每行代表一条用户记录,包含用户ID、姓名、年龄等信息。请描述如何使用Ruby及相关框架读取该CSV文件,并将其转化为便于处理的格式(如数组或哈希表),请给出关键代码片段及简要解释。
28.7万 热度难度
编程语言Ruby

知识考点

AI 面试

面试题答案

一键面试

在Ruby中,处理CSV文件可以使用标准库csv。以下以将CSV数据转换为数组和哈希表为例:

转换为数组

require 'csv'

data = []
CSV.foreach('超大文件.csv', headers: true) do |row|
  data << row.to_a
end

解释:

  1. require 'csv':引入CSV处理库。
  2. CSV.foreach('超大文件.csv', headers: true):逐行读取CSV文件,headers: true表示第一行是表头。
  3. row.to_a:将每一行数据转换为数组,data << row.to_a将转换后的数组添加到data数组中。

转换为哈希表

require 'csv'

data = []
CSV.foreach('超大文件.csv', headers: true) do |row|
  hash = {}
  row.each do |header, value|
    hash[header] = value
  end
  data << hash
end

解释:

  1. 同样先引入csv库。
  2. 逐行读取CSV文件,针对每一行:
    • 创建一个空的哈希表hash
    • 使用row.each遍历每一列,将表头作为键,对应的值作为值,填充哈希表。
    • 最后将填充好的哈希表添加到data数组中。这样data数组中每个元素都是一个哈希表,代表一条用户记录。