如何在 python 中将 JSON 结果转换为 Parquet?

新手上路,请多包涵

按照以下脚本将 JSON 文件转换为 parquet 格式。我正在使用 pandas 库来执行转换。但是发生以下错误: AttributeError: ‘DataFrame’ object has no attribute ‘schema’ 我还是 python 的新手。

这是我正在使用的原始 json 文件:[ { “a”: “01”, “b”: “teste01” }, { “a”: “02”, “b”: “teste02” } ]

我究竟做错了什么?

 import numpy as np
import pandas as pd
import pyarrow as pa
import pyarrow.parquet as pq

df = pd.read_json('C:/python/json_teste')

pq = pa.parquet.write_table(df, 'C:/python/parquet_teste')

错误:

 ---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-23-1b4ced833098> in <module>
----> 1 pq = pa.parquet.write_table(df, 'C:/python/parquet_teste')

C:\Anaconda\lib\site-packages\pyarrow\parquet.py in write_table(table, where, row_group_size, version, use_dictionary, compression, write_statistics, use_deprecated_int96_timestamps, coerce_timestamps, allow_truncated_timestamps, data_page_size, flavor, filesystem, **kwargs)
   1256     try:
   1257         with ParquetWriter(
-> 1258                 where, table.schema,
   1259                 filesystem=filesystem,
   1260                 version=version,

C:\Anaconda\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
   5065             if self._info_axis._can_hold_identifiers_and_holds_name(name):
   5066                 return self[name]
-> 5067             return object.__getattribute__(self, name)
   5068
   5069     def __setattr__(self, name, value):

AttributeError: 'DataFrame' object has no attribute 'schema'

打印文件:

 #print
print(df)
   a        b
0  1  teste01
1  2  teste02

#following columns
df.columns
Index(['a', 'b'], dtype='object')

#following types
df.dtypes
a     int64
b    object
dtype: object

原文由 Mateus Silvestre 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.5k
1 个回答

如果您的动机只是将 json 转换为 parquet,您可以使用 pyspark API:

 >>> data = [ { "a": "01", "b": "teste01" }, { "a": "02", "b": "teste02" } ]
>>> df = spark.createDataFrame(data)
>>> df.write.parquet("data.parquet")

现在,这个 DF 是一个 spark dataframe,可以保存在 parquet 中。

原文由 Hussain Bohra 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题