向KV目标导入数据时遇V3IO_API缺失错误,已配其他变量仍报错
向KV目标导入数据时的V3IO_API缺失异常问题
异常信息
File "C:\Python\ingestKVdatetime\venv\lib\site-packages\mlrun\datastore\targets.py", line 1155, in get_table_object V3ioDriver(webapi=endpoint), File "C:\Python\ingestKVdatetime\venv\lib\site-packages\storey\drivers.py", line 100, in __init__ NeedsV3ioAccess.__init__(self, webapi, access_key) File "C:\Python\ingestKVdatetime\venv\lib\site-packages\storey\drivers.py", line 72, in __init__ raise ValueError("Missing webapi parameter or V3IO_API environment variable") ValueError: Missing webapi parameter or V3IO_API environment variable
源代码片段
import mlrun import mlrun.feature_store as fstore ... mlrun.set_env_from_file("mlrun-nonprod.env") project = mlrun.get_or_create_project(project_name, context='./', user_project=False) feature_set = fstore.FeatureSet(feature_name, entities=[fstore.Entity("fn0"), fstore.Entity("fn1")],engine="storey") feature_set.set_targets(targets=[mlrun.datastore.NoSqlTarget()], with_defaults=False) feature_set.save() fstore.ingest(feature_set, dataFrm, overwrite=True)
疑问
已配置MLRUN_DB、V3IO_USERNAME、V3IO_ACCESS_KEY环境变量,为何仍需设置V3IO_API?该从何处获取V3IO_API的配置信息?
解答
为什么需要V3IO_API?
NoSqlTarget底层依赖V3IO存储服务,V3IO_API是V3IO WebAPI服务的端点地址,用于建立与V3IO存储集群的连接。你配置的其他环境变量仅用于身份验证和MLRun服务连接,缺少这个端点地址,程序无法定位要连接的V3IO存储服务,因此必须配置。
如何获取V3IO_API配置信息?
- 若在Iguazio平台运行:
- 平台默认V3IO WebAPI地址格式为
https://<集群域名>:8443,比如集群域名为my-iguazio-cluster.com,则V3IO_API=https://my-iguazio-cluster.com:8443 - 也可在Iguazio平台的控制面板或用户设置中找到对应API端点信息
- 平台默认V3IO WebAPI地址格式为
- 若为本地部署的V3IO服务:
- 查看V3IO服务启动配置,默认端口通常是8081(HTTP)或8443(HTTPS),地址为
http://localhost:8081或https://localhost:8443 - 或联系运维人员获取正确的服务端点地址
- 查看V3IO服务启动配置,默认端口通常是8081(HTTP)或8443(HTTPS),地址为
解决方法
在mlrun-nonprod.env文件中添加一行:
V3IO_API=https://<你的V3IO集群端点>:8443
或在运行脚本前通过命令行设置环境变量:
# Windows set V3IO_API=https://<你的V3IO集群端点>:8443 # Linux/macOS export V3IO_API=https://<你的V3IO集群端点>:8443
内容的提问来源于stack exchange,提问作者JIST
相关产品推荐
相关产品推荐

