【发布时间】:2020-07-13 13:45:29
【问题描述】:
问题
如何从 Azure 数据工厂 (AD) 管道执行 egg 文件? 目前我只能从执行 egg 文件的地方调用 Databricks 笔记本。有什么方法可以直接做到这一点?
做了什么
在this answer之后,我得到了以下异常:
{
"errorCode": "3201",
"message": "Must specify one jar or maven library for jar task, either via jar_uri or libraries.",
"failureType": "UserError",
"target": "Execute Egg",
"details": []
}
代码和结构
在我的本地机器上我可以执行python dist/hello_world-1.0-py2.7.egg,这将打印'Hello world!'
src
|-__init__.py
|-main.py
__main__.py
setup.py
setup.py
from setuptools import setup, find_packages
setup(
name='hello-world',
version='1.0',
packages=find_packages(),
py_modules=['__main__']
)
__main_ _.py
from src.main import run
if __name__ == '__main__':
run()
src/main.py
def run():
print('Hello world!')
if __name__ == '__main__':
run()
【问题讨论】:
-
如何定义
class Main: @classmethod def main(cls): return run(),然后将Main指定为主类名? -
@a_guest 它不起作用。看起来我的鸡蛋只有在根目录中有一个带有
if __name__ == '__main__':部分的__main__.py文件时才能执行。如果我将此代码替换为一个类,我将无法运行python dist/hello_world-1.0-py2.7.egg -
@NicoNing Message
Must specify one jar...for 3201 未记录在您提供的链接中。我什至在 ADF 都找不到可以证明的证据。 -
@VB_ 我的意思是将该类包含在
__main__.py中,然后将其用作if __name__ == '__main__': Main.main()。
标签: python azure azure-data-factory azure-databricks egg