【发布时间】:2018-11-08 10:26:31
【问题描述】:
我正在尝试将数据从 mongoDB 转储转换为 parquet 格式。我正在为此使用 python、pymongo 和一个 shell 脚本。
当我运行 shell 脚本对数据进行哑化时,我得到了很多 BSON 文件,我没有找到直接转换 BSON -> Parquet 的方法,所以我正在尝试做 BSON -> JSON -> Parquet。
但是我不知道如何将这些 BSON 文件转换为 JSON,我尝试了 Pymongo 的 bson.decode_file_iter(),它返回了一个我不知道如何处理的生成器。
<generator object decode_file_iter at 0x000002582B3F4C50>
我也尝试了 bson.json_utils 但我也没有弄清楚如何使用它。当我使用转储方法时,我得到了一些奇怪的字符串。
["\u00e3\u0000\u0000\u0000\u0007_id\u0000[\u0007\u0012\u00f51\u02dc}n#\u00ff\u00d5)\u0002\"login\"\u0000\u0006\u0000\u0000\u0000araan\u0000\u0002\"nome\"\u0000\u0006\u0000\u0000\u0000araan\u0000\u0002\"perfil\"\u0000\b\u0000\u0000\u0000gerente\u0000\u0002\"solucao\"\u0000\u0007\u0000\u0000\u0000raizen\u0000\u0002\"senha\"\u0000A\u0000\u0000\u00008d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92\u0000\u0002_class\u0000\"\u0000\u0000\u0000com.tm.attendex.api.model.Usuario\u0000\u0000"]
编辑:我尝试遍历生成器并收到以下错误:
File "C:/Users/fabio/PycharmProjects/MongoDump/mongodump.py", line 18, in <module>
for row in gen:
File "C:\Users\fabio\PycharmProjects\MongoDump\venv\lib\site-packages\bson\__init__.py", line 971, in decode_file_iter
obj_size = _UNPACK_INT(size_data)[0] - 4
TypeError: a bytes-like object is required, not 'str'
【问题讨论】:
标签: python json mongodb pymongo bson