我有一个文件存储在hdfs中作为 part-m-00000.gz.parquet 我试过逃跑 hdfs dfs -text dir/part-m-00000.gz.parquet 但它被压缩了,所以我跑了 gunzip part-m-00000.gz.parquet 但它不会解压缩文件,因为它无法识别 .parquet 分机。如何获取此文件的架构/列名?
part-m-00000.gz.parquet
hdfs dfs -text dir/part-m-00000.gz.parquet
gunzip part-m-00000.gz.parquet
.parquet
wsewodh21#
因为它不是文本文件,所以不能对它执行“-text”。即使没有安装Parquet工具,也可以通过配置单元轻松地读取它,前提是可以将该文件加载到配置单元表中。
xnifntxz2#
也许它能够使用桌面应用程序来查看Parquet地板和其他二进制格式的数据,如orc和avro。它是纯java应用程序,因此可以在linux、mac和windows上运行。有关详细信息,请查看bigdata文件查看器。它支持数组、Map等复杂数据类型。
rslzwgfq3#
您将无法使用hdfs dfs-text“打开”该文件,因为它不是文本文件。Parquet文件写入磁盘的方式与文本文件非常不同。同样,parquet项目也提供了parquet工具来执行您正在尝试执行的任务。打开并查看模式、数据、元数据等。查看parquet工具项目(简单地说,就是一个jar文件)此外,cloudera支持和贡献很大的Parquet,也有一个很好的Parquet工具使用的例子页面。该页面中针对您的用例的一个示例是
parquet-tools schema part-m-00000.parquet
checkout cloudera页面。将Parquet文件格式与impala、hive、pig、hbase和mapreduce一起使用
2fjabf4q4#
apachearrow使用许多不同的语言(包括c、c++、rust、go、java、javascript等)很容易获得parquet元数据。下面介绍如何使用pyarrow(python-apache-arrow api)获取模式:
import pyarrow.parquet as pq table = pq.read_table(path) table.schema # pa.schema([pa.field("movie", "string", False), pa.field("release_year", "int64", True)])
有关如何使用pyarrow从Parquet文件读取元数据信息的更多详细信息,请参见此处。您还可以使用spark获取Parquet文件的模式。
val df = spark.read.parquet('some_dir/') df.schema // returns a StructType
structtype对象如下所示:
StructType( StructField(number,IntegerType,true), StructField(word,StringType,true) )
从structtype对象,可以推断parquet元数据中的列名、数据类型和可为null的属性。Spark进近没有箭头进近干净。
eagi6jfj5#
如果您的Parquet文件像我一样位于hdfs或s3中,您可以尝试以下操作:高密度光纤
parquet-tools schema hdfs://<YOUR_NAME_NODE_IP>:8020/<YOUR_FILE_PATH>/<YOUR_FILE>.parquet
s3级
parquet-tools schema s3://<YOUR_BUCKET_PATH>/<YOUR_FILE>.parquet
希望有帮助。
5条答案
按热度按时间wsewodh21#
因为它不是文本文件,所以不能对它执行“-text”。即使没有安装Parquet工具,也可以通过配置单元轻松地读取它,前提是可以将该文件加载到配置单元表中。
xnifntxz2#
也许它能够使用桌面应用程序来查看Parquet地板和其他二进制格式的数据,如orc和avro。它是纯java应用程序,因此可以在linux、mac和windows上运行。有关详细信息,请查看bigdata文件查看器。
它支持数组、Map等复杂数据类型。
rslzwgfq3#
您将无法使用hdfs dfs-text“打开”该文件,因为它不是文本文件。Parquet文件写入磁盘的方式与文本文件非常不同。
同样,parquet项目也提供了parquet工具来执行您正在尝试执行的任务。打开并查看模式、数据、元数据等。
查看parquet工具项目(简单地说,就是一个jar文件)
此外,cloudera支持和贡献很大的Parquet,也有一个很好的Parquet工具使用的例子页面。该页面中针对您的用例的一个示例是
checkout cloudera页面。将Parquet文件格式与impala、hive、pig、hbase和mapreduce一起使用
2fjabf4q4#
apachearrow使用许多不同的语言(包括c、c++、rust、go、java、javascript等)很容易获得parquet元数据。
下面介绍如何使用pyarrow(python-apache-arrow api)获取模式:
有关如何使用pyarrow从Parquet文件读取元数据信息的更多详细信息,请参见此处。
您还可以使用spark获取Parquet文件的模式。
structtype对象如下所示:
从structtype对象,可以推断parquet元数据中的列名、数据类型和可为null的属性。Spark进近没有箭头进近干净。
eagi6jfj5#
如果您的Parquet文件像我一样位于hdfs或s3中,您可以尝试以下操作:
高密度光纤
s3级
希望有帮助。