Browse Source
Using the whole word zookeeper instead of short cut zk Co-authored-by: Jiajie Zhong <zhongjiajie955@gmail.com>3.2.0-release
JieguangZhou
2 years ago
committed by
GitHub
8 changed files with 243 additions and 0 deletions
@ -0,0 +1,42 @@ |
|||||||
|
.. Licensed to the Apache Software Foundation (ASF) under one |
||||||
|
or more contributor license agreements. See the NOTICE file |
||||||
|
distributed with this work for additional information |
||||||
|
regarding copyright ownership. The ASF licenses this file |
||||||
|
to you under the Apache License, Version 2.0 (the |
||||||
|
"License"); you may not use this file except in compliance |
||||||
|
with the License. You may obtain a copy of the License at |
||||||
|
|
||||||
|
.. http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
|
||||||
|
.. Unless required by applicable law or agreed to in writing, |
||||||
|
software distributed under the License is distributed on an |
||||||
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
||||||
|
KIND, either express or implied. See the License for the |
||||||
|
specific language governing permissions and limitations |
||||||
|
under the License. |
||||||
|
|
||||||
|
OpenMLDB |
||||||
|
========= |
||||||
|
|
||||||
|
|
||||||
|
A OpenMLDB task type's example and dive into information of **PyDolphinScheduler**. |
||||||
|
|
||||||
|
Example |
||||||
|
------- |
||||||
|
|
||||||
|
.. literalinclude:: ../../../src/pydolphinscheduler/examples/task_openmldb_example.py |
||||||
|
:start-after: [start workflow_declare] |
||||||
|
:end-before: [end workflow_declare] |
||||||
|
|
||||||
|
Dive Into |
||||||
|
--------- |
||||||
|
|
||||||
|
.. automodule:: pydolphinscheduler.tasks.openmldb |
||||||
|
|
||||||
|
|
||||||
|
YAML file example |
||||||
|
----------------- |
||||||
|
|
||||||
|
.. literalinclude:: ../../../examples/yaml_define/OpenMLDB.yaml |
||||||
|
:start-after: # under the License. |
||||||
|
:language: yaml |
@ -0,0 +1,33 @@ |
|||||||
|
# Licensed to the Apache Software Foundation (ASF) under one |
||||||
|
# or more contributor license agreements. See the NOTICE file |
||||||
|
# distributed with this work for additional information |
||||||
|
# regarding copyright ownership. The ASF licenses this file |
||||||
|
# to you under the Apache License, Version 2.0 (the |
||||||
|
# "License"); you may not use this file except in compliance |
||||||
|
# with the License. You may obtain a copy of the License at |
||||||
|
# |
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
# |
||||||
|
# Unless required by applicable law or agreed to in writing, |
||||||
|
# software distributed under the License is distributed on an |
||||||
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
||||||
|
# KIND, either express or implied. See the License for the |
||||||
|
# specific language governing permissions and limitations |
||||||
|
# under the License. |
||||||
|
|
||||||
|
# Define the workflow |
||||||
|
workflow: |
||||||
|
name: "OpenMLDB" |
||||||
|
|
||||||
|
# Define the tasks under the workflow |
||||||
|
tasks: |
||||||
|
- name: OpenMLDB |
||||||
|
task_type: OpenMLDB |
||||||
|
zookeeper: "127.0.0.1:2181" |
||||||
|
zookeeper_path: "/openmldb" |
||||||
|
execute_mode: "online" |
||||||
|
sql: | |
||||||
|
USE demo_db; |
||||||
|
set @@job_timeout=200000; |
||||||
|
LOAD DATA INFILE 'file:///tmp/train_sample.csv' |
||||||
|
INTO TABLE talkingdata OPTIONS(mode='overwrite'); |
@ -0,0 +1,43 @@ |
|||||||
|
# Licensed to the Apache Software Foundation (ASF) under one |
||||||
|
# or more contributor license agreements. See the NOTICE file |
||||||
|
# distributed with this work for additional information |
||||||
|
# regarding copyright ownership. The ASF licenses this file |
||||||
|
# to you under the Apache License, Version 2.0 (the |
||||||
|
# "License"); you may not use this file except in compliance |
||||||
|
# with the License. You may obtain a copy of the License at |
||||||
|
# |
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
# |
||||||
|
# Unless required by applicable law or agreed to in writing, |
||||||
|
# software distributed under the License is distributed on an |
||||||
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
||||||
|
# KIND, either express or implied. See the License for the |
||||||
|
# specific language governing permissions and limitations |
||||||
|
# under the License. |
||||||
|
|
||||||
|
# [start workflow_declare] |
||||||
|
"""A example workflow for task openmldb.""" |
||||||
|
|
||||||
|
from pydolphinscheduler.core.process_definition import ProcessDefinition |
||||||
|
from pydolphinscheduler.tasks.openmldb import OpenMLDB |
||||||
|
|
||||||
|
sql = """USE demo_db; |
||||||
|
set @@job_timeout=200000; |
||||||
|
LOAD DATA INFILE 'file:///tmp/train_sample.csv' |
||||||
|
INTO TABLE talkingdata OPTIONS(mode='overwrite'); |
||||||
|
""" |
||||||
|
|
||||||
|
with ProcessDefinition( |
||||||
|
name="task_openmldb_example", |
||||||
|
tenant="tenant_exists", |
||||||
|
) as pd: |
||||||
|
task_openmldb = OpenMLDB( |
||||||
|
name="task_openmldb", |
||||||
|
zookeeper="127.0.0.1:2181", |
||||||
|
zookeeper_path="/openmldb", |
||||||
|
execute_mode="offline", |
||||||
|
sql=sql, |
||||||
|
) |
||||||
|
|
||||||
|
pd.run() |
||||||
|
# [end workflow_declare] |
@ -0,0 +1,48 @@ |
|||||||
|
# Licensed to the Apache Software Foundation (ASF) under one |
||||||
|
# or more contributor license agreements. See the NOTICE file |
||||||
|
# distributed with this work for additional information |
||||||
|
# regarding copyright ownership. The ASF licenses this file |
||||||
|
# to you under the Apache License, Version 2.0 (the |
||||||
|
# "License"); you may not use this file except in compliance |
||||||
|
# with the License. You may obtain a copy of the License at |
||||||
|
# |
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
# |
||||||
|
# Unless required by applicable law or agreed to in writing, |
||||||
|
# software distributed under the License is distributed on an |
||||||
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
||||||
|
# KIND, either express or implied. See the License for the |
||||||
|
# specific language governing permissions and limitations |
||||||
|
# under the License. |
||||||
|
|
||||||
|
"""Task OpenMLDB.""" |
||||||
|
|
||||||
|
from pydolphinscheduler.constants import TaskType |
||||||
|
from pydolphinscheduler.core.task import Task |
||||||
|
|
||||||
|
|
||||||
|
class OpenMLDB(Task): |
||||||
|
"""Task OpenMLDB object, declare behavior for OpenMLDB task to dolphinscheduler. |
||||||
|
|
||||||
|
:param name: task name |
||||||
|
:param zookeeper: OpenMLDB cluster zookeeper address, e.g. 127.0.0.1:2181. |
||||||
|
:param zookeeper_path: OpenMLDB cluster zookeeper path, e.g. /openmldb. |
||||||
|
:param execute_mode: Determine the init mode, offline or online. You can switch it in sql statementself. |
||||||
|
:param sql: SQL statement. |
||||||
|
""" |
||||||
|
|
||||||
|
_task_custom_attr = { |
||||||
|
"zk", |
||||||
|
"zk_path", |
||||||
|
"execute_mode", |
||||||
|
"sql", |
||||||
|
} |
||||||
|
|
||||||
|
def __init__( |
||||||
|
self, name, zookeeper, zookeeper_path, execute_mode, sql, *args, **kwargs |
||||||
|
): |
||||||
|
super().__init__(name, TaskType.OPENMLDB, *args, **kwargs) |
||||||
|
self.zk = zookeeper |
||||||
|
self.zk_path = zookeeper_path |
||||||
|
self.execute_mode = execute_mode |
||||||
|
self.sql = sql |
@ -0,0 +1,73 @@ |
|||||||
|
# Licensed to the Apache Software Foundation (ASF) under one |
||||||
|
# or more contributor license agreements. See the NOTICE file |
||||||
|
# distributed with this work for additional information |
||||||
|
# regarding copyright ownership. The ASF licenses this file |
||||||
|
# to you under the Apache License, Version 2.0 (the |
||||||
|
# "License"); you may not use this file except in compliance |
||||||
|
# with the License. You may obtain a copy of the License at |
||||||
|
# |
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
# |
||||||
|
# Unless required by applicable law or agreed to in writing, |
||||||
|
# software distributed under the License is distributed on an |
||||||
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
||||||
|
# KIND, either express or implied. See the License for the |
||||||
|
# specific language governing permissions and limitations |
||||||
|
# under the License. |
||||||
|
|
||||||
|
"""Test Task OpenMLDB.""" |
||||||
|
from unittest.mock import patch |
||||||
|
|
||||||
|
from pydolphinscheduler.constants import TaskType |
||||||
|
from pydolphinscheduler.tasks.openmldb import OpenMLDB |
||||||
|
|
||||||
|
|
||||||
|
def test_openmldb_get_define(): |
||||||
|
"""Test task openmldb function get_define.""" |
||||||
|
zookeeper = "127.0.0.1:2181" |
||||||
|
zookeeper_path = "/openmldb" |
||||||
|
execute_mode = "offline" |
||||||
|
|
||||||
|
sql = """USE demo_db; |
||||||
|
set @@job_timeout=200000; |
||||||
|
LOAD DATA INFILE 'file:///tmp/train_sample.csv' |
||||||
|
INTO TABLE talkingdata OPTIONS(mode='overwrite'); |
||||||
|
""" |
||||||
|
|
||||||
|
code = 123 |
||||||
|
version = 1 |
||||||
|
name = "test_openmldb_get_define" |
||||||
|
expect = { |
||||||
|
"code": code, |
||||||
|
"name": name, |
||||||
|
"version": 1, |
||||||
|
"description": None, |
||||||
|
"delayTime": 0, |
||||||
|
"taskType": TaskType.OPENMLDB, |
||||||
|
"taskParams": { |
||||||
|
"resourceList": [], |
||||||
|
"localParams": [], |
||||||
|
"zk": zookeeper, |
||||||
|
"zkPath": zookeeper_path, |
||||||
|
"executeMode": execute_mode, |
||||||
|
"sql": sql, |
||||||
|
"dependence": {}, |
||||||
|
"conditionResult": {"successNode": [""], "failedNode": [""]}, |
||||||
|
"waitStartTimeout": {}, |
||||||
|
}, |
||||||
|
"flag": "YES", |
||||||
|
"taskPriority": "MEDIUM", |
||||||
|
"workerGroup": "default", |
||||||
|
"environmentCode": None, |
||||||
|
"failRetryTimes": 0, |
||||||
|
"failRetryInterval": 1, |
||||||
|
"timeoutFlag": "CLOSE", |
||||||
|
"timeoutNotifyStrategy": None, |
||||||
|
"timeout": 0, |
||||||
|
} |
||||||
|
with patch( |
||||||
|
"pydolphinscheduler.core.task.Task.gen_code_and_version", |
||||||
|
return_value=(code, version), |
||||||
|
): |
||||||
|
openmldb = OpenMLDB(name, zookeeper, zookeeper_path, execute_mode, sql) |
||||||
|
assert openmldb.get_define() == expect |
Loading…
Reference in new issue