webhdfs 0.5.4 → 0.5.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2dbe7f5cbc7dd8becf1af99bc7b4291170e09763
4
- data.tar.gz: fec022e46547493c2ecb825e14e62c32ad62a7ab
3
+ metadata.gz: 079a9de419dc30c5280876fdb45dc4e6a3844fc1
4
+ data.tar.gz: 915c3c102e9ae29a729d6498d2280b2fc94077f3
5
5
  SHA512:
6
- metadata.gz: c098695dd8248293b86e85e742e9abfd41da0b1a433609cf0f18bec6522a78135c324095c8a2280ee3ae6bb2524e09a8fc30c121eafd0fd68345c64c0a7caef9
7
- data.tar.gz: 0b7a52e3ce9d03ff6d26533604309831d4228606bc3e5f1421f5150323a521a820861bc586906b9606bd5fd55c3d50952b0a70911a235565df101bba65efea1e
6
+ metadata.gz: 514504c4024a57b80d81347634c33fa061c82ab28f6f55ff47f9dc5c3dde2efdca053161a912479bb64f2e8e6fef137af1f639848dbe5b1d506b349ac8f6045b
7
+ data.tar.gz: 6135ce124d4619ed25a5f1aa790e9cbb7f9cc5a56085256d6bd386f9a9eb0c9fc3a9537b7e8ef72f8a7d19a95afc3f42098c2e3ce5874fcd7526dcb469903a25
data/README.md CHANGED
@@ -21,7 +21,10 @@ To create/append/read files:
21
21
 
22
22
  client.create('/path/to/file', data)
23
23
  client.create('/path/to/file', data, :overwrite => false, :blocksize => 268435456, :replication => 5, :permission => 0666)
24
-
24
+
25
+ #This does not require whole data in memory, and it can be read chunk by chunk, ex: File data
26
+ client.create('/path/to/file', file_IO_handle, :overwrite => false, :permission => 0666)
27
+
25
28
  client.append('/path/to/existing/file', data)
26
29
 
27
30
  client.read('/path/to/target') #=> data
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.4
1
+ 0.5.5
@@ -268,7 +268,18 @@ module WebHDFS
268
268
  path
269
269
  end
270
270
 
271
- res = conn.send_request(method, request_path, payload, header)
271
+ res = nil
272
+ if !payload.nil? and payload.is_a?(IO)
273
+ req = Net::HTTPGenericRequest.new(method,(payload ? true : false),true,request_path,header)
274
+ raise WebHDFS::IOError, 'Error reading given IO data source' unless payload.respond_to? :read and payload.respond_to? :size
275
+ raise WebHDFS::ClientError, 'Error accepting given IO resource as data payload, Not valid in methods other than PUT and POST' unless (method == 'PUT' or method == 'POST')
276
+
277
+ req.body_stream = payload
278
+ req.content_length = payload.size
279
+ res = conn.request(req)
280
+ else
281
+ res = conn.send_request(method, request_path, payload, header)
282
+ end
272
283
 
273
284
  case res
274
285
  when Net::HTTPSuccess
@@ -70,6 +70,31 @@ module WebHDFS
70
70
  end
71
71
  module_function :copy_from_local
72
72
 
73
+ # Public: Copy local file into HDFS with IOStream
74
+ #
75
+ # file - local file IO handle
76
+ # path - HDFS file path
77
+ # options - :overwrite, :blocksize, :replication, :mode, :buffersize, :verbose
78
+ #
79
+ # Examples
80
+ #
81
+ # FileUtils.copy_from_local_via_stream 'local_file_IO_handle', 'remote_file'
82
+ #
83
+ def copy_from_local_via_stream(file, path, options={})
84
+ opts = options.dup
85
+ fu_log "copy_from_local_via_stream local=#{file} hdfs=#{path}" if opts.delete(:verbose)
86
+ if mode = opts.delete(:mode)
87
+ mode = ('%03o' % mode) if mode.is_a? Integer
88
+ else
89
+ mode = '644'
90
+ end
91
+ opts[:permission] = mode
92
+ opts[:overwrite] ||= true
93
+
94
+ client.create(path, File.new(file, 'rb'), opts)
95
+ end
96
+ module_function :copy_from_local_via_stream
97
+
73
98
  # Public: Copy remote HDFS file into local
74
99
  #
75
100
  # path - HDFS file path
@@ -13,6 +13,11 @@ class FileUtilsTest < Test::Unit::TestCase
13
13
  WebHDFS::FileUtils.rm('VERSION', :verbose => true)
14
14
  end
15
15
 
16
+ def test_copy_from_local_via_stream
17
+ WebHDFS::FileUtils.copy_from_local_via_stream('VERSION', '/user/jay/VERSION', :verbose => true)
18
+ WebHDFS::FileUtils.rm('VERSION', :verbose => true)
19
+ end
20
+
16
21
  def test_rm
17
22
  WebHDFS::FileUtils.mkdir('foo', :mode => 0777, :verbose => true)
18
23
  WebHDFS::FileUtils.rm('foo', :verbose => true)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webhdfs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.4
4
+ version: 0.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kazuki Ohta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-12 00:00:00.000000000 Z
11
+ date: 2013-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -107,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
107
  version: '0'
108
108
  requirements: []
109
109
  rubyforge_project:
110
- rubygems_version: 2.0.2
110
+ rubygems_version: 2.0.3
111
111
  signing_key:
112
112
  specification_version: 4
113
113
  summary: Ruby WebHDFS/HttpFs client