我有一个场景,我想列出 Azure Blob 中目录内的所有文件夹。如果不存在文件夹,则创建一个具有特定名称的新文件夹。
我正在尝试使用 dbutils.fs.ls(path) 列出文件夹。
但上述命令的问题是,如果路径不存在,它就会失败,这对我来说是一个有效的场景。
如果我的程序第一次运行,路径将不存在,并且 dbutils.fs.ls 命令将失败。有什么方法可以从 Databricks 动态处理这种情况。
如果我可以在执行作业之前从 Databricks 在 Azure Blob 中创建一个空文件夹,它也对我有用。
我尝试从 databricks 笔记本运行以下命令
%sh mkdir -p /mnt/<mountName>/path/folderName
Run Code Online (Sandbox Code Playgroud)
这里命令成功运行,即使我在 Azure Blob 中的容器已安装,它也不会创建该文件夹。抱歉这么长的帖子。任何帮助深表感谢。提前致谢
我在 Databricks 上运行查询:
DROP TABLE IF EXISTS dublicates_hotels;
CREATE TABLE IF NOT EXISTS dublicates_hotels
...
Run Code Online (Sandbox Code Playgroud)
我试图理解为什么我收到以下错误:
SQL 语句错误: AnalysisException:无法创建表('
default.dublicates_hotels')。关联位置 ('dbfs:/user/hive/warehouse/dublicates_hotels') 不为空,但它不是 Delta 表
我已经找到了解决它的方法(通过手动删除它):
dbutils.fs.rm('.../dublicates_hotels',recurse=True)
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么它仍然保留桌子?即使我创建了一个新集群(终止了前一个集群),并且我正在附加一个新集群来运行此查询。
任何人都可以帮助我理解这一点吗?
我刚开始使用databricks/pyspark.我使用python/spark 2.1.我已将数据上传到表格.该表是一个完整的字符串列.我希望将映射函数应用于列中的每个元素.我将表加载到数据帧中:
df = spark.table("mynewtable")
Run Code Online (Sandbox Code Playgroud)
我能看到的唯一方法是其他人说是将其转换为RDD以应用映射函数,然后返回到数据框以显示数据.但这会导致工作中止阶段失败:
df2 = df.select("_c0").rdd.flatMap(lambda x: x.append("anything")).toDF()
Run Code Online (Sandbox Code Playgroud)
我想要做的就是将任何类型的map函数应用于表格中的数据.例如,在列中为每个字符串添加一些内容,或者对char执行拆分,然后将其放回到数据框中,以便我可以.show()或显示它.
我是Scala编程的新手,这是我的问题:如何计算每行的字符串数量?我的Dataframe由一列Array [String]类型组成.
friendsDF: org.apache.spark.sql.DataFrame = [friends: array<string>]
Run Code Online (Sandbox Code Playgroud) 我正在尝试找出我在 Databricks 中使用的 python 版本。
为了找出我尝试过的
import sys
print(sys.version)
Run Code Online (Sandbox Code Playgroud)
我得到的输出为3.7.3
但是,当我转到 Cluster --> SparkUI --> Environment 时
我看到集群 Python 版本是2。
这是指哪个版本?
当我尝试跑步时
%sh python --version
Run Code Online (Sandbox Code Playgroud)
我仍然得到 Python 3.7.3
每个工作节点/驱动节点可以有不同的 python 版本吗?
注意:我使用的设置有 1 个工作节点和 1 个驱动程序节点(总共 2 个节点具有相同的规格),Databricks 运行时版本为 6.5 ML
我们如何在 databricks 工作区中找到现有的秘密范围。Azure Databricks 中的特定 SecretScope 引用了哪个 keyvault?
在 Databricks 中运行简单的 SQL 命令时,有时会收到以下消息:
确定 DBIO 文件片段的位置。此操作可能需要一些时间。
这是什么意思,我如何防止它每次都必须执行这种看似昂贵的操作?即使所有基础表都是增量表,也会发生这种情况。
我正在使用 DataBricks 和 Spark 7.4ML,
以下代码成功记录了参数和指标,我可以在 MLFLOW gui 中看到 ROCcurve.png(只是模型下方树中的项目)。但实际上剧情是空白的。为什么?
with mlflow.start_run(run_name="logistic-regression") as run:
pipeModel = pipe.fit(trainDF)
mlflow.spark.log_model(pipeModel, "model")
predTest = pipeModel.transform(testDF)
predTrain = pipeModel.transform(trainDF)
evaluator=BinaryClassificationEvaluator(labelCol="arrivedLate")
trainROC = evaluator.evaluate(predTrain)
testROC = evaluator.evaluate(predTest)
print(f"Train ROC: {trainROC}")
print(f"Test ROC: {testROC}")
mlflow.log_param("Dataset Name", "Flights " + datasetName)
mlflow.log_metric(key="Train ROC", value=trainROC)
mlflow.log_metric(key="Test ROC", value=testROC)
lrModel = pipeModel.stages[3]
trainingSummary = lrModel.summary
roc = trainingSummary.roc.toPandas()
plt.plot(roc['FPR'],roc['TPR'])
plt.ylabel('False Positive Rate')
plt.xlabel('True Positive Rate')
plt.title('ROC Curve')
plt.show()
plt.savefig("ROCcurve.png")
mlflow.log_artifact("ROCcurve.png")
plt.close()
display(predTest.select(stringCols + ["arrivedLate", "prediction"]))
Run Code Online (Sandbox Code Playgroud)
笔记本显示的内容:
MLFlow 显示的内容:
通常我使用下面的 URL 将文件从 Databricks DBFS FileStore 下载到我的本地计算机。
*https://<MY_DATABRICKS_INSTANCE_NAME>/fileStore/?o=<NUMBER_FROM_ORIGINAL_URL>*
Run Code Online (Sandbox Code Playgroud)
然而,这次文件没有下载,URL 而是将我引导至 Databricks 主页。有人对如何将文件从 DBFS 下载到本地有任何建议吗?或者应该如何修复 URL 以使其正常工作?
任何建议将不胜感激!
八打灵再也
databricks ×10
apache-spark ×4
pyspark ×2
python ×2
azure ×1
delta-lake ×1
matplotlib ×1
mlflow ×1
pyspark-sql ×1
scala ×1