Workarounds:
Have we tested whether the cosmosdb connector jar works with more current versions of ADB and spark?
It is still possible to create a cluster through the API. Happy to do PR with appropriate json for creating with databricks CLI or directly through the REST API.
This would be awesome.
Have we tested whether the cosmosdb connector jar works with more current versions of ADB and spark?
It was mentioned here that which of the versions are supported.
ok, have an initial draft working here. https://github.com/jreynolds01/Recommenders/blob/jeremr-refarch-review/notebooks/04_operationalize/create_and_configure_cluster.ipynb
Will file a PR after going through the walkthrough again to make sure that's clear.
Do you have a recommended way of writing a test for something like this? I can use papermill to run the notebook, but the biggest issue I don't know how to deal with is in dealing with the secrets associated with the DB workspace.
As of now we don't have an example of testing something on databricks, I know that devops recently added a way to do CICD with it https://docs.azuredatabricks.net/user-guide/notebooks/azure-devops-services-version-control.html. That should allow one to manage secrets
One approach is to go with the DevOps setup for Databricks. Another is to hide the secrets by using dbutils in Databricks. See here.
@miguelgfierro - this is the issue I mentioned earlier today that raised the question of what version the cosmosdb jar works with.
We should differentiate the dependencies of the reco_utils module and the dependencies of the java jar.
The conda file we create for reco_utils installs pyspark=2.3.1, and that conda file is used to create the testing environment, so we know that the pyspark tests are run with 2.3.1.
So, there seems to be a little bit of version skew between our testing environment, and our recommended azure databricks env (which is due to the cosmos connector).
We need to decide which side of the trade-off we want to be on:
or
I think for spark we should stick with databricks which is the reference for our customers. Can we choose a new version (stable enough) and refactor our code and reference architecture to stick with it?
Commented by @nikhilrj in PR #438: I tested the O16N notebook with Databricks 5.0 / Spark 2.4 and it worked oob. Would this be a good version to take?
Update per our sync this morning:
Current Plan: update tests to 2.4.x, with plan to update to a newer version of databricks while pushing the cosmosdb connector team to update their tests. In addition to our normal feedback process, I've also filed a public issue with that team here: https://github.com/Azure/azure-cosmosdb-spark/issues/286
@miguelgfierro - I would prefer to try 5.1, because it allows for notebook-scoped libraries, which would dramatically simplify things.
I will test that real fast now (ignoring the work to update libraries).
It ran successfully on databricks 5.1, spark 2.4 with these versions:
PySpark version: 2.4.0.dev0
Azure SDK version: 1.0.8
There doesn't look like there's a long-term support (LTS) version yet with 2.3 or 2.4.
Should we move everything to databricks 5.1 and spark 2.4. We should then also check all the tests for stand alone spark: https://github.com/Microsoft/Recommenders/blob/staging/scripts/generate_conda_file.sh#L85
For that script, should we update the spark version to be a variable that the build agent can set to facilitate version testing?
For that script, should we update the spark version to be a variable that the build agent can set to facilitate version testing?
sounds good, maybe we could add an optional input and put as default the version we think is best
Created issue: https://github.com/Microsoft/Recommenders/issues/460 and pull request: https://github.com/Microsoft/Recommenders/pull/461
updated ref arch. so this is solved for now.