所以我使用以下幾行在我的 Windows 10 計算機上創建了一個鑲木地板檔案
# pandas and pyarrow installed using pip on Python 3.9
# pip install pandas==1.4.2
# pip install pyarrow==7.0.0
import pandas as pd
df = pd.DataFrame(dict(x=[0, 1, 2], y=[3, 4, 5]))
df.to_parquet('some/path/to/my/windows_parquet_file.parquet')
現在,我正在 Azure Pipelines 中創建一個管道,我想通過執行 Python 腳本將其加載到同一個檔案中。執行 python 腳本的代理的作業系統是 Ubuntu 20.04.4。該腳本的內容:
# pandas and pyarrow installed using pip on Python 3.9
# pip install pandas==1.4.2
# pip install pyarrow==7.0.0
import pandas as pd
parquet_file_path = 'some/path/to/my/windows_parquet_file.parquet'
df = pd.read_parquet(parquet_file_path)
但是,最后一行給了我一個錯誤
Traceback (most recent call last):
File "/home/vsts/work/_temp/ec5ac2c3-4983-41d5-abe4-cd532dafb5af.py", line 4, in <module>
df = pd.read_parquet(parquet_file_path)
File "/opt/hostedtoolcache/Python/3.9.12/x64/lib/python3.9/site-packages/pandas/io/parquet.py", line 493, in read_parquet
return impl.read(
File "/opt/hostedtoolcache/Python/3.9.12/x64/lib/python3.9/site-packages/pandas/io/parquet.py", line 240, in read
result = self.api.parquet.read_table(
File "/opt/hostedtoolcache/Python/3.9.12/x64/lib/python3.9/site-packages/pyarrow/parquet.py", line 1960, in read_table
dataset = _ParquetDatasetV2(
File "/opt/hostedtoolcache/Python/3.9.12/x64/lib/python3.9/site-packages/pyarrow/parquet.py", line 1766, in __init__
[fragment], schema=fragment.physical_schema,
File "pyarrow/_dataset.pyx", line 797, in pyarrow._dataset.Fragment.physical_schema.__get__
File "pyarrow/error.pxi", line 143, in pyarrow.lib.pyarrow_internal_check_status
File "pyarrow/error.pxi", line 99, in pyarrow.lib.check_status
pyarrow.lib.ArrowInvalid: Could not open Parquet input source '<Buffer>': Parquet magic bytes not found in footer. Either the file is corrupted or this is not a parquet file.
有誰知道為什么會提出這個問題以及如何解決它?我一直在瀏覽互聯網,但找不到任何指出在不同作業系統上寫入/讀取鑲木地板檔案的差異。
我的 PC 和代理 VM 上的 Python 版本都是 3.9。
uj5u.com熱心網友回復:
因此,在花了相當多的時間解決這個問題之后,我找到了這個錯誤的原因和解決方案。該問題與不同的作業系統或軟體包版本或任何其他問題無關。
我提到的檔案是 GIT lfs 的一部分。因此,該檔案不再是鑲木地板檔案,而是指向此類檔案的鏈接。解決方案是確保在嘗試訪問之前下載任何相關檔案。在我使用 Azure Pipelines 的特定情況下,我在這里找到了解決方案: How to use Git LFS with Azure Repos and Pipelines
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/484471.html
