databricks-我们可以在创建过程中通过从sql查找表传递值来改变挂载点名称吗

6qqygrtg  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(350)

提前感谢这个网站是伟大的帮助!!!!
问题:
在创建Dataframe时,是否可以对装载点名称和文件名进行变量化。
mount name:从comaytable中选择company(将comapy名称作为mountpoint变量传递)
来源=“wasbs://uidbddnnps@dmoddddssa.blob.core.windows.net“,mount_point=“/mnt/”variablizename”,extra_configs={”fs.azure.sas.uiasaps.dmodssdsdgarea.blob.core.windows.net“:dbutils.secrets.get(scope=“aidst”,key=“keydmodslaarea”)})打印(=>成功”)
文件名variablzie:
df=spark.read.format(“csv”).option(“sep”,“,”).options(header=“true”,inferschema=“true”).option(“escape”,“”).load(“/mnt/at/variablize.csv”)
我们能从datafactory传递这个值吗?如果需要,我也可以使用它

lqfhib0f

lqfhib0f1#

您可以选择以下步骤:
步骤1:声明变量:

mountname = 'test'
csvname = 'original.csv'
path = "dbfs:/mnt/{0}/{1}".format(mountname,csvname)

步骤2:装载存储帐户

dbutils.fs.mount(
  source = "wasbs://test@chepra.blob.core.windows.net/",
  mount_point = "/mnt/{0}".format(mountname),
  extra_configs = {"fs.azure.sas.test.chepra.blob.core.windows.net":"gv7nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXlOiA=="})
print("=> Succeeded")

步骤3:创建sparkDataframe

df = spark.read.format("csv").option("sep", ",").options(header= "true", inferschema='true').option('escape','"').load("{0}".format(path))

ajsxfq5m

ajsxfq5m2#

只需了解您有一个adf,您在其中调用查找(运行sql查询),其目的是希望将查找中的值传递给笔记本。
如果是这样的话,我们可以通过实现查找活动和foreach(在所有记录中循环)来实现这一点。在foreach中,请使用一个笔记本活动,将此指向您要运行的笔记本并传递公司的价值(例如@item()等)https://docs.microsoft.com/en-us/azure/data-factory/control-flow-lookup-activity .
在笔记本上,您可以使用小部件并获取作为传入参数的值。
companyname=dbutils.widgets.get(“companyname”)
如果你有任何问题,请告诉我。

相关问题