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



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

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.



179
180
181
# File 'lib/swineherd/filesystem/hadoopfilesystem.rb', line 179

def handle
  @handle
end

#hdfsObject

Returns the value of attribute hdfs.



179
180
181
# File 'lib/swineherd/filesystem/hadoopfilesystem.rb', line 179

def hdfs
  @hdfs
end

#pathObject

Returns the value of attribute path.



179
180
181
# File 'lib/swineherd/filesystem/hadoopfilesystem.rb', line 179

def path
  @path
end

Instance Method Details

#closeObject



218
219
220
# File 'lib/swineherd/filesystem/hadoopfilesystem.rb', line 218

def close
  @handle.close
end

#puts(string) ⇒ Object



214
215
216
# File 'lib/swineherd/filesystem/hadoopfilesystem.rb', line 214

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

#readObject



202
203
204
# File 'lib/swineherd/filesystem/hadoopfilesystem.rb', line 202

def read
  @handle.read
end

#readlineObject



206
207
208
# File 'lib/swineherd/filesystem/hadoopfilesystem.rb', line 206

def readline
  @handle.readline
end

#write(string) ⇒ Object



210
211
212
# File 'lib/swineherd/filesystem/hadoopfilesystem.rb', line 210

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