sha*_*359 21
我是否需要 Hadoop 或 HDFS 来查看/创建/存储它们?
不需要。可以使用您最喜欢的语言的库来完成。例如:通过 Python,您可以使用。PyArrow、FastParquet、熊猫。
如何查看镶木地板文件?如何创建镶木地板文件?
(适用于 Windows、Linux、MAC 的 GUI 选项)
您可以使用DBeaver查看 parquet 数据、查看元数据和统计信息、对一个或多个文件运行 sql 查询、生成新的 parquet 文件等。
DBeaver 利用 DuckDB 驱动程序对 parquet 文件执行操作。
只需使用 Dbeaver 创建DuckDB 的内存实例并运行本文档中提到的查询即可。
这是一个 Youtube 视频,解释了这一点 - https://youtu.be/j9_YmAKSHoA
替代方案: DuckDB CLI 工具使用
Sal*_*Sal 20
Apache Parquet是一种二进制文件格式,以柱状方式存储数据.Parquet文件中的数据类似于RDBMS样式表,其中包含列和行.但是,您不是一次只访问一行数据,而是一次只能访问一列.
Apache Parquet是现代大数据存储格式之一.它有几个优点,其中一些是:
Parquet文件可以存储在任何文件系统中,而不仅仅是HDFS.如上所述,它是一种文件格式.所以它就像任何其他文件一样,它有一个名称和.parquet扩展名.但是,在大数据环境中通常会发生的事情是,将一个数据集拆分(或分区)为多个镶木地板文件,以提高效率.
默认情况下,所有Apache大数据产品都支持Parquet文件.这就是为什么它似乎只能存在于Apache生态系统中.
如前所述,默认情况下,所有当前的Apache大数据产品(如Hadoop,Hive,Spark等)都支持Parquet文件.
因此,可以利用这些系统来生成或读取Parquet数据.但这远非实际.想象一下,为了读取或创建CSV文件,您必须安装Hadoop/HDFS + Hive并进行配置.幸运的是还有其他解决方案.
要创建自己的镶木地板文件:
要查看镶木地板文件内容:
还有其他方法吗?
有可能.但存在的并不多,而且它们大多没有得到很好的记录.这是因为Parquet是一种非常复杂的文件格式(我甚至找不到正式的定义).我列出的那些是我唯一知道的,因为我正在写这个回复
除了@sal 的广泛回答之外,我在这种情况下还遇到了另一个问题:
由于我们仍处于 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)
现在可以通过Apache Arrow来实现,它可以简化不同数据格式之间的通信/传输,请参阅此处的答案或Python 的官方文档。
基本上,这使您能够以DataFrame类似熊猫的方式快速读取/写入镶木地板文件,这为您提供了notebooks查看和处理此类文件的好处,就像它是普通csv文件一样。
这是在 Windows 中使用 Python 显示单表镶木地板文件的快速“技巧”(我使用 Anaconda Python):
安装pyarrow包https://pypi.org/project/pyarrow/
安装pandasgui包https://pypi.org/project/pandasgui/
创建这个简单的脚本parquet_viewer.py:
import pandas as pd
from pandasgui import show
import sys
import os
dfs = {}
for fn in sys.argv[1:]:
dfs[os.path.basename(fn)] = pd.read_parquet(fn)
show(**dfs)
Run Code Online (Sandbox Code Playgroud)
通过以管理员身份.parquet运行这些命令来关联文件扩展名(当然,您需要调整 Python 安装的路径):
assoc .parquet=parquetfile
ftype parquetfile="c:\Python3\python.exe" "\<path to>\parquet_viewer.py" "%1"
Run Code Online (Sandbox Code Playgroud)
这将允许打开 @Sal 答案中 .NET 查看器不支持的压缩格式(例如 Zstd)压缩的镶木地板文件。
| 归档时间: |
|
| 查看次数: |
25144 次 |
| 最近记录: |