小编har*_*ini的帖子

如何使用 aws 控制台将带有库的 python 代码从 Windows 本地计算机上传到 aws lambda

我需要使用通过 API 网关触发的 AWS Lambda。我有 python 脚本,它从 S3bucket 加载机器学习模型,并从 api 调用获取输入并预测结果。我可以成功触发用 python 内联编写的 lambda 函数。但我想使用机器学习包来预测 lambda 函数。所以我知道我需要上传安装在虚拟环境中的包的代码,我做到了。但是 lambda 在触发时给出错误“无法导入模型 lambda_function”。我有 lambda_function.py 和方法“处理程序”。请告诉我我是否做得正确(创建虚拟环境并安装包并上传)以及为什么会出现此错误。另外,让我了解 Windows 和 AWS 控制台的解决方案。我已经看到许多有关 Linux 命令和使用 aws cli 的答案。

ZIP文件夹

lambda_函数

拉姆达功能设置

lambda 函数设置

更新:

这真让我抓狂!。我已经尝试了答案中找到的所有方法,但没有一个对我有用。它给出了相同的错误:“无法导入模块:lambda_function”所以我无法理解错误在哪里。如果您有任何建议,请帮助我。在你说函数名称之前:我有正确的名称:lambda_function.lambda_handler。我压缩了内容而不是目录。请参阅 lambda json 文件下面的我的 lambda 代码和 lambda 设置

Lambda函数代码:

import boto3
import os
import uuid
import sklearn
import pickle

def lambda_handler(event, context):
    s3_client = boto3.client('s3')
    s_desc=event['params']['querystring']['token']
    X_test1=[]
    X_test1.append(s_desc)
    #load model
    bucket = 'harshini-snow-bucket'
    key = 'model.pkl'
    download_path = '/tmp/{}{}'.format(uuid.uuid4(), key)
    s3_client.download_file(bucket, key, download_path) …
Run Code Online (Sandbox Code Playgroud)

python windows amazon-web-services aws-lambda

5
推荐指数
1
解决办法
8681
查看次数

仅更新已更改的行 pyspark 增量表 databricks

与创建的数据帧相比,需要仅更新现有表中发生更改的行。所以现在,我确实减去并获取更改的行,但不确定如何合并到现有表中。

old_df = spark.sql("select * from existing table")
diff = new_df.subtract(old_df)
Run Code Online (Sandbox Code Playgroud)

现在必须插入 diff 数据框(如果是新行)或更新现有记录

(deltaTable.alias("full_df").merge(
    merge_df.alias("append_df"),
    "full_df.col1 = append_df.col1 OR full_df.col2 =append_df.col2") 
  .whenNotMatchedInsertAll() 
  .execute()
)
Run Code Online (Sandbox Code Playgroud)

这不是更新现有记录(情况:col2 值已更改;col1 未更改)

merge pyspark databricks delta-lake

3
推荐指数
1
解决办法
9194
查看次数