簡體   English   中英

Apache Beam 可以檢測 Spark 和 Pandas 等 Parquet 文件的架構(列名)嗎?

[英]Can Apache Beam detect the schema (column names) of a Parquet file like Spark and Pandas?

我是 Apache Beam 的新手,我來自 API 非常豐富的 Spark 世界。

如何使用 Apache Beam 獲取 Parquet 文件的架構? 沒有它,我將數據加載到內存中,因為有時它會冒很大的風險,而且我只對了解列和可選的列類型感興趣。

語言是 Python。

存儲系統為 Google Cloud Storage,Apache Beam 作業必須在 Dataflow 中運行。

僅供參考,我已按照sof 中的建議嘗試了以下操作:

from pyarrow.parquet import ParquetFile
ParquetFile(source).metadata

首先,當我給它一個gs://..路徑時它不起作用,給我這個錯誤: error: No such file or directory

然后我在我的機器中嘗試了一個本地文件,我將代碼稍微更改為:

from pyarrow.parquet import ParquetFile
ParquetFile(source).metadata.schema

所以我可以有列:

<pyarrow._parquet.ParquetSchema object at 0x10927cfd0>
name: BYTE_ARRAY
age: INT64
hobbies: BYTE_ARRAY String

但是在我看來,這個解決方案需要我將此文件放到本地(Dataflow 服務器??),並且它不使用 Apache Beam。

任何(更好的)解決方案?

謝謝!

我很高興在閱讀了apache_beam.io.parquetio的代碼源后,我可以想出一個手工制作的解決方案:

import pyarrow.parquet as pq
from apache_beam.io.parquetio import _ParquetSource
import os

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = '<json_key_path>'

ps = _ParquetSource("", None, None, None) # file_pattern, min_bundle_size, validate, columns
with ps.open_file("<GCS_path_of_parquet_file>") as f:
    pf = pq.ParquetFile(f)
    print(pf.metadata.schema)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM