|
|
1
19
注意:我已将其扩展为Python和Parquet的全面指南 this post 拼花地板格式分区为了使用过滤器,您需要使用分区以拼花格式存储数据。从许多拼花地板列和分区中加载几个拼花地板列和分区可以大大提高拼花地板与CSV的I/O性能。Parquet可以基于一个或多个字段的值对文件进行分区,并为嵌套值的唯一组合创建目录树,或者为一个分区列创建一组目录。这个 PySpark Parquet documentation 解释拼花地板如何工作得相当好。 性别和国家的划分 this :
如果需要对数据进行进一步分区,还可以进行行组分区,但大多数工具只支持指定行组大小,您必须执行以下操作
使用Pandas编写分区您需要使用Parquet对数据进行分区,然后可以使用过滤器加载数据。您可以使用PyArrow、pandas或 Dask 或 PySpark 对于大型数据集。 例如,要在pandas中写入分区,请执行以下操作:
这会将文件按如下方式排列:
在PyArrow中加载拼花地板分区要使用分区列按一个属性获取事件,请在列表中放置元组过滤器:
使用逻辑AND进行筛选要获取具有两个或多个属性的事件,只需创建过滤器元组列表:
使用逻辑OR筛选要使用或获取两个事件,需要将过滤器元组嵌套在它们自己的列表中:
使用AWS Data Wrangler加载拼花地板分区
正如前面提到的另一个答案,将数据过滤加载到数据所在的特定分区(本地或云中)的特定列的最简单方法是使用
加载拼花地板隔墙
|
|
|
2
13
对于任何从Google来到这里的人来说,当你阅读拼花地板文件时,你现在可以在PyArrow中过滤行。不管你是通过pandas还是pyarrow阅读。拼花地板 从 documentation :
|
|
|
3
4
目前
因此,如果数据集是嵌套层次结构中多个分区拼花文件的集合(此处描述的分区数据集类型:
https://arrow.apache.org/docs/python/parquet.html#partitioned-datasets-multiple-files
),您可以使用
但是,如果您得到一条指定这样一个无效过滤器的错误消息,那就太好了。我为此打开了一个问题: https://issues.apache.org/jira/browse/ARROW-5572 |
|
|
4
4
对于python 3.6+而言,AWS有一个名为AWS data wrangler的库,该库有助于Pandas/S3/Parquet之间的集成,并允许您过滤已分区的S3键。 安装do;
为了减少读取的数据,可以根据存储在s3上的拼花地板文件中的分区列过滤行。
从分区列中筛选行
对于awswrangler<1.0.0
对于awswrangler>1.0.0 do;
|
|
|
Jay · 对Pyarrows的HdfsClient使用多处理 8 年前 |
|
|
Mulgard · 如何将大熊猫数据帧保存到hdfs? 8 年前 |
|
|
Martin Studer · 从拼花文件读取/写入pyarrow张量 8 年前 |