Scala代码通过使用小部件传递动态值来读取镶木地板文件

时间:2020-06-09 15:20:17

标签: scala apache-spark databricks azure-databricks

我具有诸如process / YYYY / MM / DD之类的文件夹结构,我需要编写一个Scala代码来读取这些文件,直到process / YYYY,然后我使用小部件动态传递月份和日期。

我使用小部件动态传递mm和dd

代码 val ReadDf = spark.read.format(“ parquet”)。option(“ header”,“ true”)。load(“” mnt / pnt / process / YYYY“)

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码从小部件中获取月份,然后创建要加载的路径:

dbutils.widgets.text("Month", "1")

val widget_month = dbutils.widgets.get("Month").toInt
val path_month = "%02d".format(widget_month)
val pathToReadFrom = s"/mnt/pnt/process/yyyy=2020/mm=${path_month}"

Databricks输出显示:

widget_month: Int = 1
path_month: String = 01
pathToReadFrom: String = /mnt/pnt/process/yyyy=2020/mm=01

现在,如果要通过小部件将参数传递到笔记本,则可以使用Notebook workflows从另一个笔记本运行它。这是该链接的示例:

dbutils.notebook.run("notebook-name", 60, {"argument": "data", "argument2": "data2", ...})