In [2]: import numpy as np
In [3]: import pandas as pd
In [4]: import pyarrow as pa
In [5]: df = pd.DataFrame({'one': [-1, np.nan, 2.5],
...: 'two': ['foo', 'bar', 'baz'],
...: 'three': [True, False, True]},
...: index=list('abc'))
...:
In [6]: table = pa.Table.from_pandas(df)
In [7]: import pyarrow.parquet as pq
In [8]: pq.write_table(table, 'example.parquet')
阅读
In [11]: pq.read_table('example.parquet', columns=['one', 'three'])
6条答案
按热度按时间wvmv3b1j1#
现在你不需要像以前那样依赖hadoop了。
请看我的另一篇文章:如何在windows中查看apacheparquet文件?
r7s23pms2#
因为它只是一种文件格式,所以很明显可以将parquet与hadoop生态系统解耦。现在我能找到的最简单的方法是通过apachearrow,参见这里的python示例。
以下是pyarrow官方文档的一小部分摘录:
写作
阅读
编辑:
直接和Pandas在一起
也可以直接使用pandas读写Dataframe。这就简单到
my_df.to_parquet("myfile.parquet")
以及my_df = pd.read_parquet("myfile.parquet")
doinxwow3#
去派对晚了,但我一直在做一些事情让这成为可能:https://github.com/jmd1011/parquet-readers.
这仍在开发中,但最终的实现应该在撰写本文后的一两个月内完成。
编辑:几个月后,仍然在做这个!它正在积极开发中,只是时间比预期的要长。
bnl4lu3b4#
Parquet地板有什么数据?您不需要hdfs来读取Parquet文件。这绝对不是先决条件。我们在incorta用Parquet锉做中转台。我们不附带对hdfs的依赖,但是,如果您愿意,您可以将文件存储在hdfs上。显然,我们incorta可以直接读取parquet文件,但是您也可以使用apache drill进行连接,使用file:///作为连接,而不是hdfs:///参见下面的示例。
要读取或写入Parquet数据,需要在存储插件格式定义中包含Parquet格式。dfs插件定义包括parquet格式。
tcomlyy65#
调查同一个问题,我发现目前显然不可能。我发现了这个git问题,它建议将parquet与hadoopapi分离。显然还没有完成。
在apachejira中,我发现了一个问题,它要求在hadoop之外读取Parquet文件。到写这篇文章的时候还没有解决。
编辑:
问题不再在github上跟踪(上面的第一个链接已经失效)。我发现的一个新问题位于apache的jira上,标题如下:
在不依赖hadoop的情况下,可以轻松地在java中读写Parquet文件
w51jfk4q6#
使用parquet文件不需要hdfs/hadoop。有不同的方式消费Parquet地板。
您可以使用apachespark访问它。
如果你在aws上,你可以直接从redshift或athena加载或访问它
如果您在azure上,则可以从sql数据仓库或sql server加载或访问它
同样在gcp中也是如此