Class: Swineherd::HadoopFileSystem::HadoopFile

Inherits:
Object
  • Object
show all
Defined in:
lib/swineherd/filesystem/hadoopfilesystem.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path, mode, fs, &blk) ⇒ HadoopFile

In order to open input and output streams we must pass around the hadoop fs object itself



186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
# File 'lib/swineherd/filesystem/hadoopfilesystem.rb', line 186

def initialize path, mode, fs, &blk
  @fs   = fs
  @path = Path.new(path)
  case mode
  when "r" then
    raise "#{@fs.type(path)} is not a readable file - #{path}" unless @fs.type(path) == "file"
    @handle = @fs.hdfs.open(@path).to_io(&blk)
  when "w" then
    # Open path for writing
    raise "Path #{path} is a directory." unless (@fs.type(path) == "file") || (@fs.type(path) == "unknown")
    @handle = @fs.hdfs.create(@path).to_io.to_outputstream
    if block_given?
      yield self
      self.close # muy muy importante
    end
  end
end

Instance Attribute Details

#handleObject

Returns the value of attribute handle.



181
182
183
# File 'lib/swineherd/filesystem/hadoopfilesystem.rb', line 181

def handle
  @handle
end

#hdfsObject

Returns the value of attribute hdfs.



181
182
183
# File 'lib/swineherd/filesystem/hadoopfilesystem.rb', line 181

def hdfs
  @hdfs
end

#pathObject

Returns the value of attribute path.



181
182
183
# File 'lib/swineherd/filesystem/hadoopfilesystem.rb', line 181

def path
  @path
end

Instance Method Details

#closeObject



220
221
222
# File 'lib/swineherd/filesystem/hadoopfilesystem.rb', line 220

def close
  @handle.close
end

#puts(string) ⇒ Object



216
217
218
# File 'lib/swineherd/filesystem/hadoopfilesystem.rb', line 216

def puts string
  write(string+"\n")
end

#readObject



204
205
206
# File 'lib/swineherd/filesystem/hadoopfilesystem.rb', line 204

def read
  @handle.read
end

#readlineObject



208
209
210
# File 'lib/swineherd/filesystem/hadoopfilesystem.rb', line 208

def readline
  @handle.readline
end

#write(string) ⇒ Object



212
213
214
# File 'lib/swineherd/filesystem/hadoopfilesystem.rb', line 212

def write string
  @handle.write(string.to_java_string.get_bytes)
end