gpt4 book ai didi

python - 如何将 .parquet 文件从本地计算机上传到 Azure Storage Data Lake Gen2?

转载 作者:行者123 更新时间:2023-12-02 06:06:25 24 4
gpt4 key购买 nike

我的本​​地计算机中有一组 .parquet 文件,我正在尝试将其上传到 Data Lake Gen2 中的容器。

我无法执行以下操作:

def upload_file_to_directory():
try:

file_system_client = service_client.get_file_system_client(file_system="my-file-system")

directory_client = file_system_client.get_directory_client("my-directory")

file_client = directory_client.create_file("uploaded-file.parquet")
local_file = open("C:\\file-to-upload.parquet",'r')

file_contents = local_file.read()

file_client.append_data(data=file_contents, offset=0, length=len(file_contents))

file_client.flush_data(len(file_contents))

except Exception as e:
print(e)

因为 .parquet 文件无法通过 .read() 函数读取。

当我尝试这样做时:

def upload_file_to_directory():

file_system_client = service_client.get_file_system_client(file_system="my-file-system")

directory_client = file_system_client.get_directory_client("my-directory")

file_client = directory_client.create_file("uploaded-file.parquet")
file_client.upload_file("C:\\file-to-upload.txt",'r')


我收到以下错误:

AttributeError: 'DataLakeFileClient' object has no attribute 'upload_file'

有什么建议吗?

最佳答案

您收到此消息是因为您已导入 DataLakeFileClient 模块。尝试安装 DataLakeServiceClient,因为它具有 upload_file 方法。

pip install DataLakeServiceClient

但是,要读取 .parquet 文件,解决方法之一是使用 pandas。下面是对我有用的代码。

storage_account_name='<ACCOUNT_NAME>'
storage_account_key='ACCOUNT_KEY'

service_client = DataLakeServiceClient(account_url="{}://{}.dfs.core.windows.net".format(
"https", storage_account_name), credential=storage_account_key)

file_system_client = service_client.get_file_system_client(file_system="container")

directory_client = file_system_client.get_directory_client(directory="directory")

file_client = directory_client.create_file("uploaded-file.parquet")

local_file = pd.read_parquet("<YOUR_FILE_NAME>.parquet")
df = pd.DataFrame(local_file).to_parquet()

file_client.upload_data(data=df,overwrite=True) #Either of the lines works
#file_client.append_data(data=df, offset=0, length=len(df))
file_client.flush_data(len(df))

并且您可能需要导入 DataLakeFileClient 库才能完成此操作:

from azure.storage.filedatalake import DataLakeServiceClient
import pandas as pd

结果:

enter image description here

关于python - 如何将 .parquet 文件从本地计算机上传到 Azure Storage Data Lake Gen2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72692155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com