我正在使用 dagster 0.11.3(撰写本文时最新版本)
我创建了一个 Dagster 管道(另存为 pipeline.py),如下所示:
@solid
def return_a(context):
return 12.34
@pipeline(
mode_defs=[
ModeDefinition(
executor_defs=[dask_executor] # Note: dask only!
)
]
)
def the_pipeline():
return_a()
Run Code Online (Sandbox Code Playgroud)
我将 DAGSTER_HOME 环境变量设置为包含名为 dagster.yaml 的文件的目录,该文件是一个空文件。这应该没问题,因为根据这些文档,默认值是合理的: https: //docs.dagster.io/deployment/dagster-instance。
我有一个现有的 Dask 集群在“scheduler:8786”上运行。基于这些文档:https://docs.dagster.io/deployment/custom-infra/dask,我创建了一个名为 config.yaml 的运行配置,如下所示:
execution:
dask:
config:
cluster:
existing:
address: "scheduler:8786"
Run Code Online (Sandbox Code Playgroud)
我已经成功地将这个运行配置与 Dagster 一起使用,如下所示:
$ dagster pipeline execute -f pipeline.py -c config.yaml
Run Code Online (Sandbox Code Playgroud)
(我检查了 Dask 日志并确保它确实在我的 Dask 集群上运行)
我的问题是: 如何让 Dagit 使用这个 Dask 集群?我发现的唯一似乎相关的是: https: //docs.dagster.io/_apidocs/execution#executors
...但它甚至没有提到 Dask 作为一个选项(它有 dagster.in_process_executor 和 dagster.multiprocess_executor,它们似乎与 dask 完全无关)。 …
我有一个脚本可以很好地执行各种依赖项安装和一些手动工作(NPM 安装,设置项目时需要执行的一些手动步骤)以在项目能够运行之前设置项目。该脚本在本地环境中运行得非常好。
我现在尝试在 Azure DevOps 中构建我的管道,我意识到我不能立即启动脚本。在脚本中运行npm install实际上并不是在我的项目文件夹中运行,但它始终在路径上运行/Users/runner/work
问题: 如何在项目文件夹中执行脚本?
我的脚本文件中的示例代码
set -e
# Setup project dependencies
npm install
# some mandatory manual work
.....
# Pod installation
cd ios
pod install
Run Code Online (Sandbox Code Playgroud)
我的 AzurePipelines.yml
- task: Bash@3
inputs:
targetType: 'inline'
script: |
sh $(System.DefaultWorkingDirectory)/projectFolder/setup.sh
failOnStderr: true
Run Code Online (Sandbox Code Playgroud)
来自 Azure 的问题日志(如您所见,由于路径不正确,npm 安装无法正常工作,因此管道内的进一步操作将失败)
npm WARN saveError ENOENT: no such file or directory, open '/Users/runner/work/package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: …Run Code Online (Sandbox Code Playgroud) 我是一个尝试学习 sklearn pipeline 的初学者。ValueError: could not convert string to float当我运行下面的代码时,出现值错误。我不确定原因是什么,因为 OneHotEncoder 将字符串转换为浮点数作为分类变量应该不会有任何问题
import json
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import ExtraTreesClassifier
from sklearn.pipeline import Pipeline
from sklearn.compose import ColumnTransformer
from sklearn.compose import make_column_transformer
from sklearn.preprocessing import OneHotEncoder
from sklearn.impute import SimpleImputer
from sklearn.ensemble import RandomForestClassifier
df = pd.read_csv('https://raw.githubusercontent.com/pplonski/datasets-for-start/master/adult/data.csv', skipinitialspace=True)
x_cols = [c for c in df.columns if c!='income']
X = df[x_cols] …Run Code Online (Sandbox Code Playgroud) 我使用 github 工作流程的 CI/CD 管道失败,并出现以下错误:
错误:无法成功处理命令 '##[add-path]/opt/hostedtoolcache/aws/0.0.0/x64'。错误:该add-path命令被禁用。ACTIONS_ALLOW_UNSECURE_COMMANDS请升级到使用环境文件或通过将环境变量设置为 来选择不安全的命令执行true。有关更多信息,请参阅:https://github.blog/changelog/2020-10-01-github-actions-deprecating-set-env-and-add-path-commands/
这是我的container.yml 文件
name: deploy-container
on:
push:
branches:
- master
- develop
paths:
- "packages/container/**"
defaults:
run:
working-directory: packages/container
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: npm install
- run: npm run build
- uses: chrislennon/action-aws-cli@v1.1
- run: aws s3 sync dist s3://${{ secrets.AWS_S3_BUCKET_NAME }}/container/latest
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
Run Code Online (Sandbox Code Playgroud)
知道为什么会发生这种情况。提前致谢
我有这两个简单的集合:
项目:
{
"id" : "111",
"name" : "apple",
"status" : "active"
}
{
"id" : "222",
"name" : "banana",
"status" : "active"
}
Run Code Online (Sandbox Code Playgroud)
存货:
{
"item_id" : "111",
"qty" : 3,
"branch" : "main"
}
{
"item_id" : "222",
"qty" : 3
}
Run Code Online (Sandbox Code Playgroud)
现在我只想返回库存集合中存在且等于“main”且具有“status”==“active”和“branch”的项目。我有下面的代码,但它返回所有文档,第二个文档有一个空的“info”数组。
db.getCollection('items')
.aggregate([
{$match:{$and:[
{"status":'active'},
{"name":{$exists:true}}
]
}},
{$lookup:{
as:"info",
from:"inventory",
let:{fruitId:"$id"},
pipeline:[
{$match:{
$and:[
{$expr:{$eq:["$item_id","$$fruitId"]}},
{"branch":{$eq:"main"}},
{"branch":{$exists:true}}
]
}
}
]
}}
])
Run Code Online (Sandbox Code Playgroud)
谁能给我一个关于如何解决这个问题的想法?
在GCP中我们可以看到管道执行图。通过 DirectRunner 在本地运行时是否可以实现同样的效果?
我正在使用 Azure Devops 管道,其中有一项任务将创建 KVM 来宾 VM,一旦通过主机内的打包程序创建 VM,它将运行 bash 脚本来检查来宾 VM 内运行的服务的状态。如果任何服务未运行或抛出错误,则此 bash 脚本将以代码 3 退出,因为我已在 bash 脚本中添加了值,如下所示
设置-e
因此,如果上述 bash 脚本失败,我希望任务失败,但问题与创建 KVM 来宾虚拟机的任务相同,因此在启动和关闭时它会抛出预期的错误,但我不希望此任务由于这些错误而失败,但是只有 bash 脚本才会失败。
我在任务“标准错误失败”中选择了选项,但不确定我们如何专门针对 bash 脚本错误使任务失败,任何人都可以对此有一些建议吗?
是否可以在 Azure DevOps 管道中并行运行前两个阶段?默认情况下,每个阶段仅在前一个阶段完成后启动,除非通过 dependentOn 属性另有指定。
目前的情况是:
我想并行运行 iOS_Dev_Build 和 iOS_QA_Build 这两个阶段。没有为 iOS_QA_Build 添加 dependentOn 条件。但默认情况下,它会等待 iOS_Dev_Build 阶段完成才开始
pipeline devops azure-devops azure-pipelines azure-pipelines-release-pipeline
我正在使用 sklearn 管道进行分类任务,如下所示:
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.impute import SimpleImputer
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import OrdinalEncoder
import shap
# -----------------------------------------------------------------------------
# Data
# -----------------------------------------------------------------------------
X, y = fetch_openml("titanic", version=1, as_frame=True, return_X_y=True)
categorical_columns = ["pclass", "sex", "embarked"]
numerical_columns = ["age", "sibsp", "parch", "fare"]
X = X[categorical_columns + numerical_columns] # [1309, 7] , there is Nan values.
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=42)
# …Run Code Online (Sandbox Code Playgroud) 如何在 GitLab 管道运行时添加标签?
当您在主分支上针对不同配置运行一些夜间(计划)管道时,这将非常有用。例如,我们每晚运行一个包含多个子模块的主分支,每个子模块都在其开发过程中的某个点(提交点 SHA)设置,我想将其标记为“MAIN”。我们运行第二个管道,我想将其标记为“HEAD”,这是拉动子模块的所有 HEAD 的结果,以查看更改在合并时是否会破坏主干。
目前它显示:
这很有帮助,但很难区分它们,因为只有管道 # 在管道之间发生变化。
pipeline ×10
azure-devops ×3
scikit-learn ×2
aggregate ×1
apache-beam ×1
azure ×1
azure-pipelines-release-pipeline ×1
bash ×1
cicd ×1
dagster ×1
devops ×1
gitlab ×1
mongodb ×1
python ×1
shap ×1
treemodel ×1
view ×1