如何从镶木地板文件中获取架构/列名称?

Sup*_*ohn 22 hadoop apache-pig hdfs parquet

我有一个存储在HDFS中的文件 part-m-00000.gz.parquet

我试图运行,hdfs dfs -text dir/part-m-00000.gz.parquet但它已经压缩,所以我运行gunzip part-m-00000.gz.parquet但它没有解压缩文件,因为它无法识别.parquet扩展名.

如何获取此文件的架构/列名称?

Urv*_*ida 30

您将无法使用hdfs dfs -text"打开"该文件,因为它不是文本文件.与文本文件相比,Parquet文件以非常不同的方式写入磁盘.

同样,Parquet项目提供镶木地板工具来完成您正在尝试的任务.打开并查看架构,数据,元数据等.

查看镶木地板工具项目(简单地说,就是一个jar文件.) 镶木地板工具

Cloudera也支持并为Parquet做出了巨大贡献,也有一个很好的页面,其中包含使用镶木地板工具的例子.您的用例的该页面的示例是

parquet-tools schema part-m-00000.parquet
Run Code Online (Sandbox Code Playgroud)

查看Cloudera页面.将Parquet文件格式与Impala,Hive,Pig,HBase和MapReduce一起使用

  • 谢谢。听起来比我预期的工作量要多得多! (2认同)
  • 这是[镶嵌工具的更新存储库](https://github.com/apache/parquet-mr/tree/master/parquet-tools). (2认同)
  • parquet-tools 链接已损坏。 (2认同)
  • 更新了该工具的链接 https://pypi.org/project/parquet-tools/ (2认同)

sha*_*359 14

Parquet CLI: \n parquet-cli是 parquet-tools 的轻量级替代品。

\n
pip install parquet-cli          //installs via pip\nparq filename.parquet            //view meta data\nparq filename.parquet --schema   //view the schema\nparq filename.parquet --head 10  //view top n rows\n
Run Code Online (Sandbox Code Playgroud)\n

该工具将提供有关 parquet 文件的基本信息。

\n

更新(替代方案):

\n\n

DuckDB 具有CLI 工具(适用于 Linux、Windows、macOS 的预构建二进制文件),可用于从命令行查询镶木地板数据。

\n
PS C:\\Users\\nsuser\\dev\\standalone_executable_binaries> ./duckdb\nConnected to a transient in-memory database.\n
Run Code Online (Sandbox Code Playgroud)\n

阅读 Parquet 架构。

\n
D DESCRIBE SELECT * FROM READ_PARQUET(\'C:\\Users\\nsuser\\dev\\sample_files\\userdata1.parquet\');\nOR\nD SELECT * FROM PARQUET_SCHEMA(\'C:\\Users\\nsuser\\dev\\sample_files\\userdata1.parquet\');\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82    column_name    \xe2\x94\x82 column_type \xe2\x94\x82 null \xe2\x94\x82 key \xe2\x94\x82 default \xe2\x94\x82 extra \xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4\n\xe2\x94\x82 registration_dttm \xe2\x94\x82 TIMESTAMP   \xe2\x94\x82 YES  \xe2\x94\x82     \xe2\x94\x82         \xe2\x94\x82       \xe2\x94\x82\n\xe2\x94\x82 id                \xe2\x94\x82 INTEGER     \xe2\x94\x82 YES  \xe2\x94\x82     \xe2\x94\x82         \xe2\x94\x82       \xe2\x94\x82\n\xe2\x94\x82 first_name        \xe2\x94\x82 VARCHAR     \xe2\x94\x82 YES  \xe2\x94\x82     \xe2\x94\x82         \xe2\x94\x82       \xe2\x94\x82\n\xe2\x94\x82 salary            \xe2\x94\x82 DOUBLE      \xe2\x94\x82 YES  \xe2\x94\x82     \xe2\x94\x82         \xe2\x94\x82       \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n
Run Code Online (Sandbox Code Playgroud)\n

有关 DuckDB 的更多信息请参见此处

\n


pdm*_*pdm 7

如果您的 Parquet 文件像我一样位于 HDFS 或 S3 中,您可以尝试以下操作:

高密度文件系统

parquet-tools schema hdfs://<YOUR_NAME_NODE_IP>:8020/<YOUR_FILE_PATH>/<YOUR_FILE>.parquet
Run Code Online (Sandbox Code Playgroud)

S3

parquet-tools schema s3://<YOUR_BUCKET_PATH>/<YOUR_FILE>.parquet
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。


小智 6

如果您使用 Docker,您还可以在容器中运行 parquet-tools:

docker run -ti -v C:\file.parquet:/tmp/file.parquet nathanhowell/parquet-tools schema /tmp/file.parquet
Run Code Online (Sandbox Code Playgroud)