开发者社区 > 云原生 > Serverless > 正文

請問如何解決以下問題 (已經確認資料都無誤且都是用複製的) 另外想問問如何將以下程式轉換成aliba

請問如何解決以下問題 (已經確認資料都無誤且都是用複製的) 另外想問問如何將以下程式轉換成alibaba cloud fc可使用的版本 import pandas as pd

from google.cloud import storage

def upload_blob(bucket_name, source_file_name, destination_blob_name): """Uploads a file to the bucket.""" # bucket_name = "your-bucket-name" # source_file_name = "local/path/to/file" # destination_blob_name = "storage-object-name"

storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(destination_blob_name)

blob.upload_from_filename(source_file_name)

print(
    "File {} uploaded to {}.".format(
        source_file_name, destination_blob_name
    )
)

def crawler(request): files = ["confirmed_global.csv", "deaths_global.csv", "recovered_global.csv"]

for f in files: df = pd.read_csv("https://github.com/CSSEGISandData/COVID-19/raw/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_" + f) df = pd.melt(df, id_vars=df.columns[:4], value_vars=df.columns[4:], var_name="date", value_name="count") df.to_csv("/tmp/"+f, index=False) upload_blob("covid19-data-newsurvey", "/tmp/"+f, f)

提问3.PNG

提问2.PNG

展开
收起
山海行 2023-05-22 20:22:24 151 0
4 条回答
写回答
取消 提交回答
  • 值得去的地方都没有捷径

    这个代码片段的目标是从 COVID-19 数据库中爬取数据,将其转换为 Pandas 数据帧,并将其上传到 Google Cloud Storage。由于您想将其转换为 Alibaba Cloud FC 可用的版本,您需要进行以下更改:

    将 import 语句中的 Google Cloud Storage 更改为 Alibaba Cloud OSS 的 Python SDK。

    更改上传函数以使用阿里云 OSS SDK。

    确保您的代码与 Alibaba Cloud FC 的 Python 运行时兼容。

    下面是一个可能的示例实现,用于将 Pandas 数据帧上传到阿里云 OSS:

    import pandas as pd import oss2

    def upload_blob(bucket_name, source_file_name, destination_blob_name, access_key_id, access_key_secret, endpoint): auth = oss2.Auth(access_key_id, access_key_secret) bucket = oss2.Bucket(auth, endpoint, bucket_name) bucket.put_object_from_file(destination_blob_name, source_file_name)

    print(
        "File {} uploaded to {}.".format(
            source_file_name, destination_blob_name
        )
    )
    

    def crawler(event, context): files = ["confirmed_global.csv", "deaths_global.csv", "recovered_global.csv"] access_key_id = 'your-access-key-id' access_key_secret = 'your-access-key-secret' endpoint = 'your-oss-endpoint' bucket_name = 'your-bucket-name'

    for f in files:
        df = pd.read_csv("https://github.com/CSSEGISandData/COVID-19/raw/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_" + f)
        df = pd.melt(df, id_vars=df.columns[:4], value_vars=df.columns[4:], var_name="date", value_name="count")
        df.to_csv("/tmp/"+f, index=False)
        upload_blob(bucket_name, "/tmp/"+f, f, access_key_id, access_key_secret, endpoint)
    

    在此示例中,您需要将 access_key_id、access_key_secret、endpoint 和 bucket_name 替换为您的阿里云 OSS 存储桶的凭据和细节。您需要将此代码上传到 Alibaba Cloud FC,并创建一个触发器以在需要时运行该函数。

    2023-05-27 13:16:51
    赞同 展开评论 打赏
  • 可以用 oss 的 put_object_from_file 的 Methodhttps://help.aliyun.com/document_detail/88426.html?spm=a2c4g.88425.0.0.7b0c603bJRzzKa#section-d14-3cw-mfb

    回答2.png

    不过 oss 的代码要自己换一下,主要也是参考上面的链接

    此答案来自钉钉群“阿里函数计算官网客户"

    2023-05-23 18:47:52
    赞同 展开评论 打赏
  • 根据您提供的信息和截图,可以看出上传到 OSS 时出现了异常。提示中指出,“AccessDeniedException” 表示访问被拒绝,通常是由于缺少或错误的身份验证密钥所致。

    建议您检查是否已正确设置了访问密钥(AccessKeyId 和 AccessKeySecret)。您可以在阿里云控制台的相应的 IAM 管理页面中创建访问密钥,并将其添加到代码中。另外,如果您使用了RAM子账号,还需要确保子账号被授权了上传到 OSS 的权限。

    此外,由于您使用的是 Google Cloud 的 Python SDK,而非阿里云 OSS 官方提供的 SDK,建议尝试使用阿里云 OSS 官方推荐的 Python SDK 进行上传操作,这可能有助于解决访问问题。

    最后,您还可以在函数计算平台的日志中查看更多详细的错误信息,了解函数计算执行过程中的具体错误,以帮助您更快地解决问题。

    2023-05-23 08:51:24
    赞同 展开评论 打赏
  • 这段代码涉及到了Google Cloud Storage的API,如果要在阿里云函数计算中使用,需要进行以下几个步骤:

    1. 安装 google-cloud-storage 模块:在函数计算的控制台中添加依赖,或者在本地安装后打包上传至函数计算。

    2. 替换 google.cloud 模块为 google.oauth2.service_account 模块:因为Google Cloud Storage需要使用服务账号进行身份验证,所以需要使用 google.oauth2.service_account 模块进行身份验证。

    3. 替换 upload_blob 函数为阿里云OSS的上传函数:因为阿里云函数计算中没有Google Cloud Storage服务,需要替换为阿里云OSS的上传函数。

    修改后的代码如下:

    import pandas as pd
    import os
    import io
    from google.oauth2 import service_account
    from google.cloud import storage
    import oss2
    def upload_to_oss(bucket_name, source_file_name, destination_blob_name):
        auth = oss2.Auth('<your-access-key-id>', '<your-access-key-secret>')
        bucket = oss2.Bucket(auth, '<your-endpoint>', bucket_name)
        
        with open(source_file_name, 'rb') as f:
            bucket.put_object(destination_blob_name, f)
        print("File {} uploaded to {}.".format(source_file_name, destination_blob_name))
    def crawler(request):
        files = ["confirmed_global.csv", "deaths_global.csv", "recovered_global.csv"]
        for f in files:
            df = pd.read_csv("https://github.com/CSSEGISandData/COVID-19/raw/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_" + f)
            df = pd.melt(df, id_vars=df.columns[:4], value_vars=df.columns[4:], var_name="date", value_name="count")
            
            # 将数据写入本地文件
            df.to_csv("/tmp/"+f, index=False)
            
            # 将本地文件上传至OSS
            upload_to_oss("covid19-data-newsurvey", "/tmp/"+f, f)
    

    需要注意的是,这段代码中的 <your-access-key-id><your-access-key-secret><your-endpoint> 需要替换为您自己的阿里云OSS的访问密钥和Endpoint。

    2023-05-22 23:44:47
    赞同 展开评论 打赏
问答分类:
问答地址:

快速交付实现商业价值。

热门讨论

热门文章

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载