簡體   English   中英

使用 Dask Dataframe 附加到 Parquet 文件時出錯

[英]Error Appending to Parquet File Using Dask Dataframe

我是 Dask 的新手,我正在嘗試將 append 轉換為鑲木地板文件....但是我的代碼始終覆蓋文件的內容?

有什么想法我在這里做錯了嗎?

print("Write dataframe 1...")
df = pd.DataFrame({'DeptId': [1, 2, 3], 'DName': ['Accounting', 'Sales', 'Finance'], 'DeptNo': [100, 200, 300]})
df.set_index(['DeptId'], inplace=True)
ddf = dd.from_pandas(df, chunksize=1000)
print(ddf.head(3))
file_name = 'C:/Temp/xxx'
ddf.to_parquet(path=file_name, engine="pyarrow")

print("\nAppend dataframe 2...")
df2 = pd.DataFrame({'DeptId': [4, 5, 6], 'DName': ['Engineering', 'Support', 'Consulting'],
                    'DeptNo': [400, 500, 600]})
df2.set_index(['DeptId'], inplace=True)
ddf2 = dd.from_pandas(df2, chunksize=1000)
print(ddf2.head(3))
ddf2.to_parquet(path=file_name, engine="pyarrow", ignore_divisions=True, append=True, overwrite=False)

print("\nResulting parquet file...")
ddf3 = dd.read_parquet(path=file_name, engine="pyarrow")
print(ddf3.head()) 

output如下...

  • 寫 dataframe 1...
             DName  DeptNo
DeptId                    
1       Accounting     100
2            Sales     200
3          Finance     300
  • Append dataframe 2...
              DName  DeptNo
DeptId                     
4       Engineering     400
5           Support     500
6        Consulting     600
  • 生成的鑲木地板文件...
              DName  DeptNo
DeptId                     
4       Engineering     400
5           Support     500
6        Consulting     600
  • 我正在使用這個版本
python  3.8.8
dask    2020.3.1
pandas  1.2.3
pyarrow 3.0.0

問候

馬克R

發生的情況是每個文件都將作為單獨的分區加載,因此當您運行.head()時,它將僅在第一個分區中查找值。 在您的情況下,您希望查看所有觀察結果,因此請嘗試以下選項之一:

print(ddf3.head(npartitions=2)) # note this will show only first 5 rows

# or

print(ddf3.head(6, npartitions=2)) # this will show first 6 rows (all of the sample data)

# or

print(ddf3.compute()) # another way to see all of the sample data

暫無
暫無

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

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