有人可以让我知道如何使用 databricks dbutils 删除文件夹中的所有文件。我已尝试以下操作,但不幸的是,Databricks 不支持通配符。
dbutils.fs.rm('adl://azurelake.azuredatalakestore.net/landing/stageone/*')
Run Code Online (Sandbox Code Playgroud)
谢谢
StackOverflow 的一位非常聪明的人帮助我将文件从 Databricks 复制到目录: copyfiles
我使用相同的原理在复制文件后删除文件,如链接所示:
for i in range (0, len(files)):
file = files[i].name
if now in file:
dbutils.fs.rm(files[i].path,'/mnt/adls2/demo/target/' + file)
print ('copied ' + file)
else:
print ('not copied ' + file)
Run Code Online (Sandbox Code Playgroud)
但是,我收到错误:
TypeError: '/mnt/adls2/demo/target/' 的类型错误 - 需要类 bool 。
有人可以让我知道如何解决这个问题吗?我认为在最初使用命令复制文件后删除文件很简单dbutils.fs.rm
我正在运行 Databricks Community Edition,我想从以下 mnt 目录中删除文件
/mnt/driver-daemon/jars
我运行 dbutils 命令:
dbutils.fs.rm('/mnt/driver-daemon/jars/', True)
但是,当我运行命令时,我收到以下消息(这基本上意味着该文件夹尚未被删除)
Out[1]: False
有人可以让我知道我哪里出错了吗?理想情况下,我想删除 jars 文件夹中的所有文件,但是,如果有人可以帮助展示如何删除该文件夹,那就足够了。
我在Databricks笔记本中编写了以下代码
name = input("Please enter your name: ")
age = input("How old are you, {0}?".format(name))
print(age)
Run Code Online (Sandbox Code Playgroud)
正如您所猜测的,运行单元格后,系统会要求我“请输入您的姓名:”问题是我不知道在哪里输入。如果这是用 intelliJ IDEA 或 IDLE 编写的,我将获得一个单独的窗口来输入我的名字。但是,使用 Databricks 笔记本,即使我在不同的单元格中输入答案,它似乎也在不断等待输入,请参见图像:
我真的应该知道这个问题的答案
我正在使用以下 databricks utilites ( dbutils) 命令将文件从一个位置复制到另一个位置,如下所示:
dbutils.fs.cp('adl://dblake.azuredatalakestore.net/jfolder2/thisfile.csv','adl://cadblake.azuredatalakestore.net/landing/')
Run Code Online (Sandbox Code Playgroud)
但是,我希望仅当不thisfile.csv存在具有相同名称“ ”的此类文件时才复制该文件。
有人可以让我知道这是否可能吗?
如果没有,还有其他解决方法吗?
我正在尝试评估使用 Power BI with Azure Analysis Services 或 Power BI with Direct Query 访问数据和对数据集运行查询的成本和性能方面的最佳方法。
图中步骤 4 和 5 描述了使用 Power BI 和 Direct Query 访问 Azure Data Lake 中的数据。而步骤 4 和 6 描述了使用 Power BI 和 Azure Analysis Services 访问数据。
根据我自己的研究,Direct Query 因性能问题而臭名昭著,例如
所有 DirectQuery 请求都发送到源数据库,因此刷新视觉对象所需的时间取决于后端源响应查询(或多个查询)结果所需的时间。
上面的陈述有据可查,但是,在我的设计中 DirectQuery 请求不应该成为问题,因为大部分逻辑和转换将在 Databricks 中进行(尽管我不希望这个问题专注于 Databricks)。
另一方面,使用 Azure 分析服务 (AAS),所有请求都发生在内存中,而不是 DirectQuery,因此速度要快得多。
因此,如果您能分享您使用 DirectQuery 和 AAS 的经验,我会很高兴。如果你能告诉我我是否错过了使用技术的任何优势/劣势/
我在 Databricks Notebook 上编写了以下 PySpark 代码,它使用以下代码行成功地将结果从 sparkSQL 保存到 Azure Cosmos DB:
df.write.format("com.microsoft.azure.cosmosdb.spark").mode("overwrite").options(**writeConfig3).save()
Run Code Online (Sandbox Code Playgroud)
完整代码如下:
test = spark.sql("""SELECT
Sales.CustomerID AS pattersonID1
,Sales.InvoiceNumber AS myinvoicenr1
FROM Sales
limit 4""")
## my personal cosmos DB
writeConfig3 = {
"Endpoint": "https://<cosmosdb-account>.documents.azure.com:443/",
"Masterkey": "<key>==",
"Database": "mydatabase",
"Collection": "mycontainer",
"Upsert": "true"
}
df = test.coalesce(1)
df.write.format("com.microsoft.azure.cosmosdb.spark").mode("overwrite").options(**writeConfig3).save()
Run Code Online (Sandbox Code Playgroud)
使用上面的代码我已经成功地写入了我的 Cosmos DB 数据库(mydatabase)和集合(mycontainer)

当我尝试通过使用以下更改 SparkSQL 来覆盖容器时(只需将 pattersonID1 更改为 pattersonID2,并将 myinvoicenr1 更改为 myinvoicenr2
test = spark.sql("""SELECT
Sales.CustomerID AS pattersonID2
,Sales.InvoiceNumber AS myinvoicenr2
FROM Sales
limit 4""")
Run Code Online (Sandbox Code Playgroud)
相反,使用新查询覆盖/更新集合 Cosmos DB 会按如下方式附加容器:
并且仍然在集合中保留原始查询: …