Используйте pyarrow и json.dump для сохранения файла json в формате hdfs. - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь сохранить файл json в HDFS, используя pyarrow.Вот как выглядит мой код.

from pyarrow import hdfs
fs = hdfs.connect(driver='libhdfs')
with fs.open(outputFileVal1, 'wb') as fp:
    json.dump(list(value1set), fp)

Это выдает ошибку, говорящую TypeError: a bytes-like object is required, not 'str'

Когда я вместо этого пытаюсь использовать joblib.dump или pickle.dump, он работает, но не сохраняется в формате json.Есть ли способ сохранить файл json напрямую в hdfs, используя pyarrow.

1 Ответ

0 голосов
/ 21 ноября 2018

Похоже, вам может понадобиться оболочка, которая будет кодировать данные, записанные json.dump, в двоичный файл, используя chunk.encode('utf8').Что-то вроде

class Utf8Encoder(object);

    def __init__(self, fp):
        self.fp = fp

    def write(self, data):
        if not isinstance(data, bytes):
            data = data.encode('utf-8')
        self.fp.write(data)

Тогда вы можете написать

json.dump(..., UtfEncoder(fp))
...