【问题标题】:databricks-cli: JSONDecodeError when running job in bash scriptdatabricks-cli:在 bash 脚本中运行作业时出现 JSONDecodeError
【发布时间】:2019-05-08 13:29:10
【问题描述】:

我正在尝试在 Linux 服务器上的 bash 脚本中使用笔记本参数运行 Databricks 作业。我正在按照docs 的说明进行操作,并且我已验证这些命令在终端中有效。

这是我的脚本:

#!/bin/bash

### this commands works in terminal but not when running script
databricks jobs run-now --job-id 1 --notebook-params '{"param1":"value1"}'

### this command works fine in terminal and when running script
databricks runs list

我得到的错误是:

Error: JSONDecodeError: Expecting value: line 1 column 59 (char 58)

另外有趣的是,其他 databricks-cli 命令在不需要 JSON 字符串参数的情况下工作。

【问题讨论】:

  • 尝试使用 utf-8 语言环境显式运行命令:LANG=en_US.UTF8 databricks jobs run-now --job-id 1--notebook-params '{"param1":"value1"}'。这行得通吗?
  • 我尝试将export LANG=en_US.UTF8 添加到脚本中,还尝试在databricks 命令前添加LANG=en_US.UTF8,但仍然出现相同的错误
  • 脚本在您在终端中运行的同一主机上运行,​​对吧? (而不是在容器或虚拟机中,对吧?)
  • 正确我在终端 (./run_script.sh) 中运行脚本,它与我能够成功运行命令的终端相同。当我尝试执行脚本中的命令时,它们只是不起作用。
  • 您是否以其他用户身份运行它?

标签: json bash databricks databricks-cli


【解决方案1】:

我在问题中提供的脚本实际上并不代表我正在运行的脚本。

我实际运行的脚本是这样的:

#!/bin/bash

currentdate=`date +\%Y\%m\%d`
RUNDATE=$(date "--date=${currentdate} - ${stepsize} day" +%Y%m%d)

### this commands works in terminal but not when running script
databricks jobs run-now --job-id 1 --notebook-params '{"param1":"value1", "rundate":"$RUNDATE"}'

### this command works fine in terminal and when running script
databricks runs list

问题是将变量传递给 JSON。

工作版本是这样的:

#!/bin/bash

stepsize=1
currentdate=`date +\%Y\%m\%d`
RUNDATE=$(date "--date=${currentdate} - ${stepsize} day" +%Y%m%d)

echo $rundate 

databricks jobs run-now --job-id 263 --notebook-params '{"param1":"value1", "rundate":"'"$RUNDATE"'"}'

databricks runs list

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-03
    • 2014-01-21
    • 1970-01-01
    • 2022-06-14
    • 2020-09-06
    • 2020-12-04
    • 2015-02-22
    • 1970-01-01
    相关资源
    最近更新 更多