如何将变量传递到Azure Databricks群集初始化脚本

时间:2019-10-03 23:28:17

标签: linux bash databricks azure-databricks

我正在尝试使用工作空间环境变量将访问令牌传递到我的自定义集群初始化脚本中。

似乎https://docs.databricks.com/clusters/init-scripts.html#environment-variables中所述,我们只能在自定义集群初始化脚本中访问一些受支持的环境变量

我尝试使用

写入基本集群配置
<div data-role="dynamic-fields">
    {{ form_Product.management_form }}
    <div class="form-inline"  style="margin-left: -15px">
        <div class="form-group col-md-2">
            {{ form_Product.quantity }}
        </div>
        <div class="form-group col-md-2">
            {{ form_Product.serialNumber }}
        </div>
        <div class="form-group col-md-2">
    <button class="btn btn-danger" data-role="remove">
        <span class="fas fa-minus"></span>
    </button>
    <button class="btn btn-primary" data-role="add">
        <span class="fas fa-plus"></span>
    </button>
</div></div></div>

我的初始化脚本仍然无法在以下行中使用此变量:

def form_exhibit_c(request):

    template_name = 'supportContract/ExhibitCtemplate.html'
    if request.method == 'GET':
        formset = ProductFormset(request.GET or None)
        form_SupportContract = SupportContractForm(request.GET or None)
        form_ProductDescription = ProductDescriptionForm(request.GET or None)
    elif request.method == 'POST':
        formset = ProductFormset(request.POST)
        form_SupportContract = SupportContractForm(request.POST)
        form_ProductDescription = ProductDescriptionForm(request.POST)

        form_SupportContract.save(commit=False)
        form_ProductDescription.save(commit=False)

        if formset.is_valid():
            for form in formset:
                serialNumber = form.cleaned_data.get('serialNumber')

                if serialNumber :
                    p = Product.objects.create(serialNumber=serialNumber, quantity='1')
    else:
        form_SupportContract = SupportContractForm()
        form_ProductDescription = ProductDescriptionForm()
        formset = ProductForm()

    return render(request, template_name, {'form_Product' : formset, 'form_ProductDescription': form_ProductDescription, 'form_SupportContract' : form_SupportContract})

使用上面的代码行,我的初始化脚本导致集群失败并出现以下错误:

    // Remove button click
    $(document).on(
        'click',
        '[data-role="dynamic-fields"] > .form-inline [data-role="remove"]',
        function(e) {
            e.preventDefault();
            $(this).closest('.form-inline').remove();
        });
    // Add button click
    $(document).on(
        'click',
        '[data-role="dynamic-fields"] > .form-inline [data-role="add"]',
        function(e) {
            e.preventDefault();
            var container = $(this).closest('[data-role="dynamic-fields"]');
            new_field_group = container.children().filter('.form-inline:first-child').clone();
            new_field_group.find('input').each(function(){
                if (this.name == 'quantity') {
                    $(this).val('1');
                }else{
                    $(this).val('');
                }
            });
            container.append(new_field_group);
        });
});

日志没有说我的bash脚本的任何部分都失败了,所以我假设它只是无法从环境变量中获取变量。

还有其他人处理过这个问题吗?我意识到我可以将此信息写入dbfs,然后将其读入init脚本,但是我想避免这样做,因为我将传递访问令牌。我还能尝试其他什么方法?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

article显示了如何将应用程序日志和指标从Azure Databricks发送到Log Analytics工作区。它使用GitHub上可用的Azure Databricks监视库。

先决条件:,如GitHub readme中所述,将Azure Databricks群集配置为使用监视库。

构建Azure监视库和配置Azure Databricks群集的步骤:

第1步:构建Azure Databricks监视库

步骤2:创建和配置Azure Databricks群集

有关更多详细信息,请参阅“ Monitoring Azure Databricks”。

希望这会有所帮助。