Загрузка сжатого файла в HDFS через бережливое использование Python

Из экономичного IDL для hdf я вижу следующее и единственное определение для записи (Версия: Hadoop-0.20):

// write a string to the open handle for the file
bool write(1:ThriftHandle handle, string data) throws (1:ThriftIOException ouch),

Данные имеют тип string, который не будет работать при попытке записи любого сжатого файла. Но в любом случае я попытался использовать вышеупомянутый API, чтобы написать свой tar.gz файл:

    pathName = ttypes.Pathname(os.path.join("/tmp", "data.tar.gz"))
    fd = open("data.tar.gz", "rb")
    thirftHandle = self.__client.create(pathName)
    b = fd.read(1)
    while b:
        self.__client.write(thirftHandle, b)
        b = fd.read(1)

    self.__client.close(thirftHandle)

Сценарий работал нормально, и файл был создан в HDFS, но когда я попытался получить его, используя следующую команду:

hadoop dfs -get /tmp/data.tar.gz .

он поврежден, как и ожидалось, при попытке распаковать.

Нет ли способа записать двоичные данные в hdfs через экономию?

0 ответов

Другие вопросы по тегам