【问题标题】:Configuring databricks-connect using python OS module使用 python OS 模块配置 databricks-connect
【发布时间】:2020-11-15 04:17:05
【问题描述】:

我想通过os.system("pip install databricks-connect==6.5")安装databricks-connect后通过python OS模块配置databricks-connect configure

成功安装 databricks-connect 后,我​​们需要通过传递以下值对其进行配置:

host= "https://<location>.azuredatabricks.net",
port= "8787",
token = "<Token>",
cluster_id = "<ClusterId>",
org_id = "<OrgId>"

在终端输入databricks-connect configure,会开始一一询问你上面的参数,如图:

现在我想用 python os.system 运行同样的东西

os.system("pip install databricks-connect")
os.system("databricks-connect configure")

之后如何传递主机、端口、令牌等?
在每个值之后,我们还必须按enter

当我在终端上运行它时,它工作正常,

echo -e 'https://adb-661130381327abc.11.azuredatabricks.net\nxxxxx\n0529-yyyy-twins608\n6611303813275431\n15001' | databricks-connect configure

但是当我尝试运行这个 python os.module 时给了我错误

os.sytem("echo -e 'https://adb-661130381327abc.11.azuredatabricks.net\nxxxxx\n0529-yyyy-twins608\n6611303813275431\n15001' | databricks-connect configure")

错误 "新主机值必须以 https:// 开头,例如 https://demo.cloud.databricks.com")

【问题讨论】:

标签: python bash subprocess os.system databricks-connect


【解决方案1】:

对@Anmol 的小修改

import subprocess

host= "https://<location>.azuredatabricks.net"
port= "8787"
token = "<Token>"
cluster_id = "<ClusterId>"
org_id = "<OrgId>"

stdin_list = [host, port, token, cluster_id, org_id]
stdin_string = '\n'.join(stdin_list)
echo = subprocess.Popen((['echo', '-e', stdin_string]), std_out=subprocess.PIPE)
output = subprocess.check_output(('databricks-connect', 'configure'), stdin=echo.stdout)
echo.wait()
print(output.decode())
echo -e

负责输入

【讨论】:

    【解决方案2】:

    您可以将数据作为标准输入传输到程序。

    import os
    
    
    host= "https://<location>.azuredatabricks.net"
    port= "8787"
    token = "<Token>"
    cluster_id = "<ClusterId>"
    org_id = "<OrgId>"
    
    stdin_list = [host, port, token, cluster_id, org_id]
    stdin_string = '\n'.join(stdin_list)
    command = "echo '{}' | {}".format(stdin_string, "databricks-connect configure")
    os.system(command)
    
    

    【讨论】:

    • 得到以下错误系统找不到指定的文件。
    • 只需仔细检查命令字符串是否正确以及参数的顺序是否正常。再试一次。我错误地将命令字符串格式错误。
    • command = "echo adb-8538834050545100.10.azuredatabricks.net | databricks-connect configure" ,当我运行此主机时正在更新,但是如何传递多个值..,我确实尝试了上面的代码但没有工作
    • 仅用于第一个值,即它正在更新的主机
    • ; 不会工作。试试echo 'adb-8538834050545100.10.azuredatabricks.net\n8787\n&lt;Token&gt;\n&lt;Cluster&gt;\n&lt;Org&gt;' | databricks-connect configure
    猜你喜欢
    • 2021-09-26
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 2021-08-16
    相关资源
    最近更新 更多