Python 将文件从databricks dbfs/local上载到S3存储桶。如何使用boto3库或装载S3将文件从Datatricks上载到S3存储桶?

Python 将文件从databricks dbfs/local上载到S3存储桶。如何使用boto3库或装载S3将文件从Datatricks上载到S3存储桶?,python,amazon-web-services,amazon-s3,boto3,databricks,Python,Amazon Web Services,Amazon S3,Boto3,Databricks,我尝试了以下几种方法在S3中上传我的文件 这最终导致存储的不是数据,而是数据的路径 数据 导入boto3 s3=boto3.resource('s3') 或 s3=boto3.client( “s3”, aws\u access\u key\u id=“key\u id”, aws\u secret\u access\u key=“access\u key”) s3.Object('bucket/folder/','xyz.csv')。上传文件(文件名='/mnt/folder/xyz.c

我尝试了以下几种方法在S3中上传我的文件 这最终导致存储的不是数据,而是数据的路径 数据

导入boto3
s3=boto3.resource('s3')

s3=boto3.client(
“s3”,
aws\u access\u key\u id=“key\u id”,
aws\u secret\u access\u key=“access\u key”)

s3.Object('bucket/folder/','xyz.csv')。上传文件(文件名='/mnt/folder/xyz.csv'))
-->给我一个错误FileNotFoundError:[Errno 2]没有这样的文件或目录:'/mnt/folder/xyz.csv'


s3.put_对象(Body='/databricks/driver/xyz.csv',Bucket='Bucket',Key='folder/xyz.csv')
-->成功执行,但打开时,文件只包含以下字符串-“/databricks/driver/xyz.csv”


s3.Object('bucket','folder/xyz.csv').put(Body=“/FileStore/folder/xyz.csv”)
-->成功执行,但打开时,文件只包含以下字符串-“/FileStore/folder/xyz.csv”


bucket=s3.bucket('bucket'))
s3.Object('bucket/folder','xyz.csv').put(Body=open('/FileStore/folder/xyz.csv','rb'))
-->给我一个错误
FileNotFoundError:[Errno 2]没有这样的文件或目录:'/mnt/folder/xyz.csv'


打开('/mnt/folder/xyz.csv',“rb”)作为f:
s3.上传文件对象(f,‘bucket’、‘folder/xyz.csv’)
-->给我一个错误
FileNotFoundError:[Errno 2]没有这样的文件或目录:'/mnt/folder/xyz.csv'


s3.meta.client.upload_文件('/mnt/folder/xyz.csv',bucket',folder/xyz.csv')
-->给我一个错误
FileNotFoundError:[Errno 2]没有这样的文件或目录:'/mnt/folder/xyz.csv'


如果有任何打字错误或语法错误,或者需要更改问题的结构,请告诉我。谢谢

我已经找到了我问题的答案-

  • 我没有使用put\u对象,而是使用upload\u file()

  • 其次,当从dbfs(databricks文件系统)读取数据时,始终 在文件夹结构名称前面加上“/dbfs”

  • 记住正斜杠(/)很重要



    下面的代码对我来说很好

    import boto3
    from botocore.client import Config
    ACCESS_KEY = 'YOUR_ACCESS_KEY'
    SECRET_KEY = 'YOUR_SECRET_KEY'
    AWS_BUCKET_NAME = "BUCKET_NAME"
    
    s3 = boto3.resource('s3', aws_access_key_id = ACCESS_KEY, aws_secret_access_key 
    =SECRET_KEY, config = Config(signature_version = 's3v4') )
    
    s3.meta.client.upload_file( '/dbfs/FileStore/filename.csv', AWS_BUCKET_NAME, 
    "filename.csv")
    
    import boto3
    from botocore.client import Config
    ACCESS_KEY = 'YOUR_ACCESS_KEY'
    SECRET_KEY = 'YOUR_SECRET_KEY'
    AWS_BUCKET_NAME = "BUCKET_NAME"
    
    s3 = boto3.resource('s3', aws_access_key_id = ACCESS_KEY, aws_secret_access_key 
    =SECRET_KEY, config = Config(signature_version = 's3v4') )
    
    s3.meta.client.upload_file( '/dbfs/FileStore/filename.csv', AWS_BUCKET_NAME, 
    "filename.csv")