用代码范围提交U-SQL作业



我当前正在通过Python库提交我的U-SQL作业,我想在C#或Python代码范围文件中添加其他代码。是否支持Python或以CLI为基于CLI的方法,我可以轻松自动化的代码文件?

理想情况下,我想使用Azure CLI或Python库,因此可以在Linux和Windows上运行(即不依赖Visual Studio(。我已经检查了PowerShell和Python的文档,但是我看不到有关如何使用Code-Behind Logic提交作业的任何说明。

这是我的python代码:

来自azure.mgmt.datalake.analytics.job导入datalakeanalyticsjobmanagementclientadlajobclient = get_client_from_cli_profile(    datalakeanalyticsjobmanagementclient,    adla_job_dns_suffix ='azuredatalakeanalytics.net'(def submit_usql_job(脚本(:    job_id = str(uuid.uuid4(((    job_result = adlajobclient.job.create(        adla_account_name,        job_id,        工作信息(            名称='示例作业',            type ='usql',            properties = usqljobproperties(脚本=脚本(        (    (    打印("提交的作业ID'{}'"。格式(job_id((    返回Job_id

很可能您将必须自己管理和注册组件作为工作中的额外步骤。然后像往常一样参考组件。如果您需要一个可能的外观示例,请从Visual Studio中提交作业,以查询包含代码范围的文件,并查看它为您生成的脚本。您会发现它正在透明地为您添加上述步骤。现在,您可以尝试在自己的代码中应用相同的方法/模式。

那要么将代码逻辑移至专用库中,您可以单独上传并一次注册,然后将其从python提交的作业中引用到您的内心内容。

一旦编译,您的代码的dll文件可以序列化到十六进制字符串中,然后通过几行代码线导入内联。这避免了需要单独上传并注册DLL。

CREATE ASSEMBLY [__TMP_inline_dll] FROM 0x4D5A900003000...;
WITH ADDITIONAL_FILES = (0x2A543C... AS "__TMP_inline_dll.pdb");
REFERENCE ASSEMBLY [__TMP_inline_dll];
/* Your USQL Code Here... */
DROP ASSEMBLY [__TMP_inline_dll];

可以使用此Python代码将文件序列化为十六进制:

import binascii
def get_file_hex_string(filepath: str):
    """Open file in binary mode and return as a hex string."""
    with open(filepath, 'rb') as f:
        hexdata = binascii.hexlify(f.read())
    return hexdata.upper()

注意:

  • 以上假设您已经编译了DLL。
  • 此样板代码包含一个PDB文件,该文件被指定为"附加",应是可选的。
  • 最后需要DROP ASSEMBLY语句以"清理"此过程,尽管我被告知在未来版本的USQL中,这将不再需要。
  • 我通过VS代码USQL加载项的非常有用的支持团队收到了此方法。

最新更新