Viking

A familiar jRuby hdfs wrapper.

Build Status

Goal

The goal is to provide ways that are similar to the common ruby file system api's for interacting with hdfs. All hdfs functionallity is powered by the java hdfs classes.

Status

Available

  • File
  • Dir
  • FileUtils

Not available yet but on the todo

  • File#fnmatch
  • File#fnmatch?
  • Dir#glob
  • FileUtils#copy

Example usage

# Set up hdfs config
Viking.configure({
  host: '127.0.0.1',
  port: 54310
})

# If "/some/data" exists and it is a file then print its content. If it is
# a directory then rename it. If it does not exist then we create it.
path = "/some/data"
if Viking::File.exists? path
  if Viking::File.file? path
    Viking::File.open(path) do |file|
      puts "Reading data from #{f.path}:"
      puts f.read
    end
  else
    Viking::File.rename(path, "/some/dir")
  end
else
  Viking::Dir.mkdir(path)
end