webhdfs 0.5.4 → 0.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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