Source code for smv.smvhdfs
#
# This file is licensed under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
[docs]class SmvHDFS(object):
def __init__(self, j_smvHDFS):
self.j_smvHDFS = j_smvHDFS
[docs] def writeToFile(self, py_fileobj, file_name):
out = self.j_smvHDFS.openForWrite(file_name)
maxsize = 8192
def read():
buf = py_fileobj.read(maxsize)
# The following should work in both Python 2.7 and 3.5.
#
# In 2.7, read() returns a str even in 'rb' mode, but calling
# bytearray converts it to the right type.
#
# In 3.5, read() returns a bytes in 'rb' mode, and calling
# bytearray does not require a specified encoding
buf = bytearray(buf)
return buf
try:
buf = read()
while (len(buf) > 0):
out.write(buf, 0, len(buf))
buf = read()
finally:
out.close()
py_fileobj.close()