如何在Windows中查看Apache Parquet文件?

Sal*_*Sal 16 .net java bigdata parquet

我找不到关于Apache Parquet文件的任何简单的英文解释.如:

  1. 这些是什么?
  2. 我是否需要Hadoop或HDFS来查看/创建/存储它们?
  3. 如何创建镶木地板文件?
  4. 如何查看镶木地板文件?

有关这些问题的任何帮助表示赞赏.

sha*_*359 21

我是否需要 Hadoop 或 HDFS 来查看/创建/存储它们?

不需要。可以使用您最喜欢的语言的库来完成。例如:通过 Python,您可以使用。PyArrowFastParquet熊猫

如何查看镶木地板文件?如何创建镶木地板文件?

适用于 Windows、Linux、MAC 的 GUI 选项

您可以使用DBeaver查看 parquet 数据、查看元数据和统计信息、对一个或多个文件运行 sql 查询、生成新的 parquet 文件等。

DBeaver 利用 DuckDB 驱动程序对 parquet 文件执行操作。

只需使用 Dbeaver 创建DuckDB 的内存实例并运行本文档中提到的查询即可。

这是一个 Youtube 视频,解释了这一点 - https://youtu.be/j9_YmAKSHoA

在此输入图像描述

替代方案: DuckDB CLI 工具使用

  • DBeaver 解决方案立即发挥作用。我花了更长的时间才观看了我需要的视频部分。不想观看的步骤:连接到 DuckDB > 将路径设置为 `:memory:` > `select * from "d:\folder\file_00.parquet"` (3认同)

Sal*_*Sal 20

什么是Apache Parquet?

Apache Parquet是一种二进制文件格式,以柱状方式存储数据.Parquet文件中的数据类似于RDBMS样式表,其中包含列和行.但是,您不是一次只访问一行数据,而是一次只能访问一列.

Apache Parquet是现代大数据存储格式之一.它有几个优点,其中一些是:

  • 列式存储:高效的数据检索,高效的压缩等......
  • 元数据位于文件的末尾:允许从数据流生成Parquet文件.(在大数据场景中很常见)
  • 所有Apache大数据产品均支持

我需要Hadoop还是HDFS?

Parquet文件可以存储在任何文件系统中,而不仅仅是HDFS.如上所述,它是一种文件格式.所以它就像任何其他文件一样,它有一个名称和.parquet扩展名.但是,在大数据环境中通常会发生的事情是,将一个数据集拆分(或分区)为多个镶木地板文件,以提高效率.

默认情况下,所有Apache大数据产品都支持Parquet文件.这就是为什么它似乎只能存在于Apache生态系统中.

如何创建/阅读Parquet文件?

如前所述,默认情况下,所有当前的Apache大数据产品(如Hadoop,Hive,Spark等)都支持Parquet文件.

因此,可以利用这些系统来生成或读取Parquet数据.但这远非实际.想象一下,为了读取或创建CSV文件,您必须安装Hadoop/HDFS + Hive并进行配置.幸运的是还有其他解决方案.

要创建自己的镶木地板文件:

要查看镶木地板文件内容:

还有其他方法吗?

有可能.但存在的并不多,而且它们大多没有得到很好的记录.这是因为Parquet是一种非常复杂的文件格式(我甚至找不到正式的定义).我列出的那些是我唯一知道的,因为我正在写这个回复

  • 我在其他地方找不到有关 Parquet 文件的文件扩展名的任何信息。我想我会选择“.parquet”;) (2认同)
  • ParquetViewer 几乎无法打开我的任何文件。:( (2认同)

nir*_*olo 6

除了@sal 的广泛回答之外,我在这种情况下还遇到了另一个问题:

如何使用 SQL 访问镶木地板文件中的数据?

由于我们仍处于 Windows 环境中,因此我知道的方法并不多。最好的结果是使用Spark作为 SQL 引擎,使用Python作为 Spark 的接口。但是,我认为Zeppelin环境也能正常工作,但我自己还没有尝试过。

Michael Garlanyk提供了一份非常出色的指南,指导您安装 Spark/Python 组合。

设置完成后,我可以通过以下方式与镶木地板互动:

from os import walk
from pyspark.sql import SQLContext

sc = SparkContext.getOrCreate()
sqlContext = SQLContext(sc)

parquetdir = r'C:\PATH\TO\YOUR\PARQUET\FILES'

# Getting all parquet files in a dir as spark contexts.
# There might be more easy ways to access single parquets, but I had nested dirs
dirpath, dirnames, filenames = next(walk(parquetdir), (None, [], []))

# for each parquet file, i.e. table in our database, spark creates a tempview with
# the respective table name equal the parquet filename
print('New tables available: \n')

for parquet in filenames:
    print(parquet[:-8])
    spark.read.parquet(parquetdir+'\\'+parquet).createOrReplaceTempView(parquet[:-8])
Run Code Online (Sandbox Code Playgroud)

一旦以这种方式加载您的镶木地板,您就可以与 Pyspark API 进行交互,例如通过:

my_test_query = spark.sql("""
select
  field1,
  field2
from parquetfilename1
where
  field1 = 'something'
""")

my_test_query.show()
Run Code Online (Sandbox Code Playgroud)


meo*_*eow 6

现在可以通过Apache Arrow来实现,它可以简化不同数据格式之间的通信/传输,请参阅此处的答案或Python 的官方文档

基本上,这使您能够以DataFrame类似熊猫的方式快速读取/写入镶木地板文件,这为您提供了notebooks查看和处理此类文件的好处,就像它是普通csv文件一样。


Enr*_*oma 6

这是在 Windows 中使用 Python 显示单表镶木地板文件的快速“技巧”(我使用 Anaconda Python):

这将允许打开 @Sal 答案中 .NET 查看器不支持的压缩格式(例如 Zstd)压缩的镶木地板文件。


Eug*_*ene 5

也许对于这个线程来说太晚了,只是为那些想要使用在 MAC 或 Linux 上运行的桌面应用程序查看 Parquet 文件的人做一些补充。
有一个桌面应用程序可以查看Parquet以及其他二进制格式数据,例如ORCAVRO。它是纯 Java 应用程序,因此可以在 Linux、Mac 和 Windows 上运行。详情请查看大数据文件查看器。

它支持复杂的数据类型,如数组、映射等。

在此输入图像描述