Alink教程(Java版)

第3.2.4节 读取Parquet文件格式数据


Apache Parquet(https://parquet.apache.org)是一种开源的、面向列的数据文件格式,提供了高效的数据压缩和编码方案,文件名后缀为".parquet" 。

由于Parquet文件中包含了数据的Schema信息,所以在读取数据时,只需输入文件的路径即可。Alink的批式/流式读取Parquet文件的组件,也只需设置FilePath参数,使用起来非常简单。

下面先演示一个批式读取的示例,具体代码如下。文件名称为“iris.parquet”,存储在OSS文件系统上,可以通过HTTP方式访问。使用Alink ParquetSourceBatchOp组件进行读取,然后进行统计操作并打印输出统计结果,最后打印输出一些数据。

new ParquetSourceBatchOp()
	.setFilePath("https://alink-test-data.oss-cn-hangzhou.aliyuncs.com/iris.parquet")
	.lazyPrintStatistics()
	.print();

运行结果如下,统计信息显示有150条记录,和iris数据集的条数相符;随后是打印输出的部分数据。

Summary: 
|colName|count|missing|  sum|  mean|variance|min|max|
|-------|-----|-------|-----|------|--------|---|---|
|  class|  150|      0|  NaN|   NaN|     NaN|NaN|NaN|
|     f0|  150|      0|876.5|5.8433|  0.6857|4.3|7.9|
|     f1|  150|      0|458.1| 3.054|   0.188|  2|4.4|
|     f2|  150|      0|563.8|3.7587|  3.1132|  1|6.9|
|     f3|  150|      0|179.8|1.1987|  0.5824|0.1|2.5|

class|f0|f1|f2|f3
-----|---|---|---|---
Iris-setosa|5.1000|3.5000|1.4000|0.2000
Iris-versicolor|5.0000|2.0000|3.5000|1.0000
Iris-setosa|5.1000|3.7000|1.5000|0.4000
Iris-virginica|6.4000|2.8000|5.6000|2.2000
Iris-versicolor|6.0000|2.9000|4.5000|1.5000
Iris-setosa|4.9000|3.0000|1.4000|0.2000
Iris-versicolor|5.7000|2.6000|3.5000|1.0000
Iris-setosa|4.6000|3.6000|1.0000|0.2000
Iris-versicolor|5.9000|3.0000|4.2000|1.5000
Iris-virginica|6.3000|2.8000|5.1000|1.5000
 ......
Iris-virginica|7.2000|3.0000|5.8000|1.6000
Iris-versicolor|4.9000|2.4000|3.3000|1.0000
Iris-virginica|7.4000|2.8000|6.1000|1.9000
Iris-virginica|6.5000|3.2000|5.1000|2.0000
Iris-versicolor|6.6000|2.9000|4.6000|1.3000
Iris-virginica|7.9000|3.8000|6.4000|2.0000
Iris-versicolor|5.2000|2.7000|3.9000|1.4000
Iris-virginica|6.4000|2.7000|5.3000|1.9000
Iris-virginica|6.8000|3.0000|5.5000|2.1000
Iris-virginica|5.7000|2.5000|5.0000|2.0000


也可以使用流的方式读取数据,具体示例代码如下。使用Alink ParquetSourceStreamOp组件进行读取,打印输出数据。

new ParquetSourceStreamOp()
	.setFilePath("https://alink-test-data.oss-cn-hangzhou.aliyuncs.com/iris.parquet")
	.print();
StreamOperator.execute();

运行结果如下,由于输出的记录条数较多,这里省略了中间的大部分记录。

class|f0|f1|f2|f3
-----|---|---|---|---
Iris-setosa|5.1000|3.5000|1.4000|0.2000
Iris-versicolor|5.0000|2.0000|3.5000|1.0000
Iris-setosa|5.1000|3.7000|1.5000|0.4000
Iris-virginica|6.4000|2.8000|5.6000|2.2000
Iris-versicolor|6.0000|2.9000|4.5000|1.5000
Iris-setosa|4.9000|3.0000|1.4000|0.2000
Iris-versicolor|5.7000|2.6000|3.5000|1.0000
Iris-setosa|4.6000|3.6000|1.0000|0.2000
Iris-versicolor|5.9000|3.0000|4.2000|1.5000

......

Iris-virginica|7.2000|3.6000|6.1000|2.5000
Iris-virginica|7.2000|3.0000|5.8000|1.6000
Iris-versicolor|4.9000|2.4000|3.3000|1.0000
Iris-virginica|7.4000|2.8000|6.1000|1.9000
Iris-virginica|6.5000|3.2000|5.1000|2.0000
Iris-versicolor|6.6000|2.9000|4.6000|1.3000
Iris-virginica|7.9000|3.8000|6.4000|2.0000
Iris-versicolor|5.2000|2.7000|3.9000|1.4000
Iris-virginica|6.4000|2.7000|5.3000|1.9000
Iris-virginica|6.8000|3.0000|5.5000|2.1000
Iris-virginica|5.7000|2.5000|5.0000|2.0000