Azure数据工厂运行Databricks Python轮子

Azure数据工厂运行Databricks Python轮子,python,pyspark,azure-data-factory-2,azure-databricks,Python,Pyspark,Azure Data Factory 2,Azure Databricks,我有一个python包(在PyCharm中创建),我想在Azure Databricks上运行。python代码在Windows和Linux环境下都使用笔记本电脑命令行中的databrick运行,因此我觉得没有代码问题 我还成功地从包中创建了一个pythonwheel,并且能够在本地从命令行运行这个wheel 最后,我将轮子作为库上传到Spark集群,并在数据工厂中创建了DataRicks Python对象,该对象指向dbfs中的轮子 当我尝试运行Data Factory管道时,它失败了,错误是

我有一个python包(在PyCharm中创建),我想在Azure Databricks上运行。python代码在Windows和Linux环境下都使用笔记本电脑命令行中的databrick运行,因此我觉得没有代码问题

我还成功地从包中创建了一个pythonwheel,并且能够在本地从命令行运行这个wheel

最后,我将轮子作为库上传到Spark集群,并在数据工厂中创建了DataRicks Python对象,该对象指向dbfs中的轮子

当我尝试运行Data Factory管道时,它失败了,错误是找不到作为main.py脚本的第一条导入语句的模块。这个模块(GlobalVariables)是我的包中的其他脚本之一。它也与main.py位于同一文件夹中;尽管我在子文件夹中也有其他脚本。我已尝试将包安装到群集头中,但仍然收到相同的错误:

ModuleNotFoundError:在2021年4月13日21:02:40 py4j导入时没有名为“GlobalVariables”的模块

是否有人成功地将wheel发行版作为Databricks Python对象运行,并且您是否必须进行任何欺骗才能让包找到包含的其余文件/模块

非常感谢你的帮助

配置屏幕抓取:


我们使用鸡蛋包装运行管道,但它应该类似于轮子。以下是这些步骤的摘要:

  • 使用
    python setup.py bdist\u egg构建包
  • 将egg/whl文件和
    main.py
    脚本放入Databricks文件存储(dbfs)中
  • 在Azure DataFactory的DataRicks活动中,转到设置选项卡
  • 在Python文件中,将dbfs路径设置为Python入口点文件(
    main.py
    script)
  • 在“附加库”部分中,选择键入egg/whel并将dbfs路径设置为egg/whl文件
  • 选择pypi并设置包的所有依赖项。建议指定开发中使用的版本

  • 确保GlobalVariables模块代码位于鸡蛋内。当您使用轮子时,请尝试在步骤5中使用它们。(我从未测试过自己)

    你能用wheel显示ADF作业的精确配置吗?谢谢Alex,我已经在帖子中添加了屏幕抓图来进行配置。我将尝试第5步,因为我没有这样做!附加库之后,我是否也应该在“库”面板上“安装”它?否,Data Factory将旋转一个新的作业群集,并安装设置选项卡中列出的依赖项谢谢!我是否需要上传到Pypi(或其他存储库),或者如果控制盘已经驻留在dbfs上,这是可选的?当库位于设置中时,STDERR在尝试运行exec(f.read())时显示“ValueError:源代码字符串不能包含空字节”。这听起来像是找不到控制盘文件吗?只要控制盘对所有节点都可用,就不需要上传控制盘(只有dbfs是可以的)。您是否执行了步骤4,您使用的路径是什么?是否有单独的py文件作为入口点?