pandas 如何在不使用Pyspark的情况下在Python中写入delta table/delta格式?

6kkfgxo0  于 2023-05-15  发布在  Spark
关注(0)|答案(2)|浏览(115)

我正在寻找一种不用pyspark就能写回python中的delta表的方法。我知道有一个名为deltalake/delta-lake-reader的库,可以用来读取delta表并将其转换为pandas Dataframe 。

目标是写回打开的delta表

输入代码如下所示:

from deltalake import DeltaTable
dt = DeltaTable('path/file')
df = dt.to_pandas()

那么,有没有什么方法可以让这样的东西从pandas dataframe写回delta表:

df = pandadf.to_delta()
DeltaTable.write(df, 'path/file')

感谢您的帮助!

ldxq2e6h

ldxq2e6h1#

现在支持了!!!,请参见此示例

from pickle import TRUE
import duckdb 
from deltalake.writer import write_deltalake
con = duckdb.connect()
df =con.execute('''
LOAD 'httpfs';
SELECT countries_and_territories, sum(deaths) as total FROM 
read_parquet('https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/ecdc_cases/latest/ecdc_cases.parquet')
group by 1
order by total desc
limit 5;
''').fetchdf()
write_deltalake('Pathto/covid', df,mode='append')
a64a0gku

a64a0gku2#

@Mim是正确的。这只是提供了更多的信息。
目前,您可以使用delta-rs直接读写Delta Lake。
您可以通过pip install deltalakeconda install -c conda-forge delta-spark安装。

import pandas as pd
from deltalake.writer import write_deltalake

df = pd.DataFrame({"x": [1, 2, 3]})
write_deltalake("path/to/delta-tables/table1", df)

写S3

storage_options = {
    "AWS_DEFAULT_REGION": "us-west-2",
    "AWS_ACCESS_KEY_ID": "xxx",
    "AWS_SECRET_ACCESS_KEY": "xxx",
    "AWS_S3_ALLOW_UNSAFE_RENAME": "true",
}

write_deltalake(
    "s3a://my-bucket/delta-tables/table1",
    df,
    mode="append",
    storage_options=storage_options,
)

要删除AWS_S3_ALLOW_UNSAFE_RENAME并并发写入,需要设置DynamoDB lock
请按照this GitHub ticket了解有关如何正确设置的更多更新。

相关问题