我在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 笔记本,即使我在不同的单元格中输入答案,它似乎也在不断等待输入,请参见图像:
我真的应该知道这个问题的答案
我正在尝试使用以下配置在 dattabricks 中安装 adls gen2
configs = {"fs.azure.account.auth.type": "OAuth",
"fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
"fs.azure.account.oauth2.client.id": "service principal id",
"fs.azure.account.oauth2.client.secret": "service principal key",
"fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/tenant-id/oauth2/token",
"fs.azure.createRemoteFileSystemDuringInitialization": "true"}
dbutils.fs.mount(
source = "abfss://file-system@storage-account.dfs.core.windows.net/directory",
mount_point = "/mnt/data",
extra_configs = configs)
Run Code Online (Sandbox Code Playgroud)
我已创建服务主体并为其创建密钥,然后在 Active Directory 角色分配中向该服务主体提供存储 Blob 角色
根据文件
"abfss://<your-file-system-name>@<your-storage-account-name>.dfs.core.windows.net/<your-directory-name>"
Run Code Online (Sandbox Code Playgroud)
blob 容器内的 your-file-system ==> 文件夹应该是什么?you-directory-name ==> 我在 Blob 容器内只有一个文件夹,所以这里很混乱 storgae(ADLS gen 2 Preview) Blob 容器文件夹 a.txt
错误
ExecutionError:调用 o480.mount 时发生错误。HEAD https://xxxxxxxxx.dfs.core.windows.net/xxxxxx?resource=filesystem&timeout=90 StatusCode=403 StatusDescription=此请求无权使用此权限执行此操作。ErrorCode=ErrorMessage=在shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.services.AbfsRestOperation.execute(AbfsRestOperation.java:134)在shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs。 services.AbfsClient.getFilesystemProperties(AbfsClient.java:197)位于shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.AzureBlobFileSystemStore.getFilesystemProperties(AzureBlobFileSystemStore.java:214)位于shaded.databricks.v20180920_b33d810。 org.apache. hadoop.fs.azurebfs.AzureBlobFileSystem.fileSystemExists(AzureBlobFileSystem.java:749)位于shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.AzureBlobFileSystem.initialize(AzureBlobFileSystem.java:110)位于com.databricks.backend。 daemon.dbutils.DBUtilsCore.verifyAzureFileSystem(DBUtilsCore.scala:485) 在 com.databricks.backend.daemon.dbutils.DBUtilsCore.mount(DBUtilsCore.scala:435) 在 sun.reflect.GenerateMethodAccessor400.invoke(未知来源) 在太阳。 Reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244) 在 py4j.reflection.ReflectionEngine …
我想使用我最喜欢的编辑器在本地编辑 Databricks 笔记本,然后使用Databricks Connect在我通常通过 Web 界面访问的 Databricks 集群上远程运行笔记本。
不幸的是,在网上搜索了几天后,我找不到有关 Databricks Connect 的详细文档。
我databricks-connect configure按照上面 PyPI 页面上的建议运行 ,但我不确定某些设置是什么。有人可以引导我完成这个过程(比如在网络界面中哪里可以找到这些值)或提供正确文档的链接吗?
databricks-connect configure我知道一些设置应该是什么,但为了完整性和其他人的利益,我将包括运行时出现的所有内容。
Databricks Host
Databricks Token
Cluster ID(例如,0921-001415-jelly628)
Org ID(仅限 Azure,请参阅?o=orgIdURL)
Port(是吗spark.databricks.service.port?)
另外,我认为这是我最感兴趣的,我是否需要对笔记本本身进行任何更改,例如定义 SparkContext 或其他内容?如果有的话,用什么配置?
我应该如何运行它?运行后databricks-connect configure,似乎没有发生任何“魔法”。当我运行时jupyter notebook,它仍然在本地运行,并且似乎不知道将其转发到远程集群。
更新:
如果您想考虑更具体的东西,在 Databricks 的 Web 界面中,dbutils是一个预定义的对象。远程运行笔记本时如何引用它?
我需要从Azure Databricks访问Azure 文件。根据文档,支持Azure Blob ,但我需要此代码来处理 Azure 文件:
dbutils.fs.mount(
source = "wasbs://<your-container-name>@<your-storage-account-name>.file.core.windows.net",
mount_point = "/mnt/<mount-name>",
extra_configs = {"<conf-key>":dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")})
Run Code Online (Sandbox Code Playgroud)
或者是否有其他方法可以将Azure 文件装载到 Azure Databricks 群集或从Azure Databricks群集访问 Azure 文件?谢谢
我想使用 IntelliJ IDEA 直接在集群中运行 Spark 进程,因此我遵循下一个文档https://docs.azuredatabricks.net/user-guide/dev-tools/db-connect.html
配置完所有内容后,我运行databricks-connect test但没有获得文档所述的 Scala REPL。
这是我的集群配置
我目前正在开发一个项目,我们将数据存储在 Azure Datalake 上。Datalake 连接到 Azure Databricks。
该要求要求 Azure Databricks 连接到 C# 应用程序,以便能够运行查询并从 C# 应用程序获取所有结果。我们目前解决该问题的方法是在 Databricks 上创建一个工作区,其中包含许多需要执行的查询。我们创建了一个链接到上述工作区的作业。从 C# 应用程序中,我们调用本文档中列出的许多 API来调用作业实例并等待其执行。但是,我无法从文档中列出的任何 API 中提取结果。
我的问题是,我们采取了正确的方法还是有什么我们没有看到的?如果这是可行的方法,那么您在从 C# 应用程序在 Azure Databricks 上成功运行的作业中提取结果方面有何经验。
我使用下面的代码从 databricks 中的数据帧创建一个表并遇到错误。
df.write.saveAsTable("newtable")
Run Code Online (Sandbox Code Playgroud)
第一次工作正常,但如果我像下面这样重写,则可重复使用
df.write.mode(SaveMode.Overwrite).saveAsTable("newtable")
Run Code Online (Sandbox Code Playgroud)
我收到以下错误。
错误信息:
org.apache.spark.sql.AnalysisException: Can not create the managed table newtable. The associated location dbfs:/user/hive/warehouse/newtable already exists
Run Code Online (Sandbox Code Playgroud) 我想列出 Azure Databricks 中每个数据库中的所有表。
所以我希望输出看起来像这样:
Database | Table_name
Database1 | Table_1
Database1 | Table_2
Database1 | Table_3
Database2 | Table_1
etc..
Run Code Online (Sandbox Code Playgroud)
这就是我现在所拥有的:
from pyspark.sql.types import *
DatabaseDF = spark.sql(f"show databases")
df = spark.sql(f"show Tables FROM {DatabaseDF}")
#df = df.select("databaseName")
#list = [x["databaseName"] for x in df.collect()]
print(DatabaseDF)
display(DatabaseDF)
df = spark.sql(f"show Tables FROM {schemaName}")
df = df.select("TableName")
list = [x["TableName"] for x in df.collect()]
## Iterate through list of schema
for x in list:
### INPUT Required: Change for target …Run Code Online (Sandbox Code Playgroud) 我正在 Databricks 中编写 Python 和 Spark SQL,并且使用 Spark 2.4.5。
我有两张桌子。
Create table IF NOT EXISTS db_xsi_ed_faits_shahgholi_ardalan.Destination
(
id Int,
Name string,
Deleted int
) USING Delta;
Create table IF NOT EXISTS db_xsi_ed_faits_shahgholi_ardalan.Source
(
id Int,
Name string,
Deleted int
) USING Delta;
Run Code Online (Sandbox Code Playgroud)
我需要在源和目标之间运行合并命令。我写了下面的命令
%sql
MERGE INTO db_xsi_ed_faits_shahgholi_ardalan.Destination AS D
USING db_xsi_ed_faits_shahgholi_ardalan.Source AS S
ON (S.id = D.id)
-- UPDATE
WHEN MATCHED AND S.Name <> D.Name THEN
UPDATE SET
D.Name = S.Name
-- INSERT
WHEN NOT MATCHED THEN
INSERT (id, Name, …Run Code Online (Sandbox Code Playgroud) %matplotlib inline
corr = df.corr()
f, ax = plt.subplots(figsize=(11, 9))
ax = sns.heatmap(
corr,
vmin=-1, vmax=1, center=0,
cmap=sns.diverging_palette(20, 220, n=500),
linewidths=.50,
cbar_kws={"shrink": .7},
square=True
)
ax.set_xticklabels(
ax.get_xticklabels(),
rotation=45,
horizontalalignment='right'
);
plt.show()
Run Code Online (Sandbox Code Playgroud)
此代码不会在天蓝色数据块上提供任何绘图显示,仅显示
<Figure size 1100x900 with 2 Axes>
Run Code Online (Sandbox Code Playgroud)
虽然相同的代码运行良好并且之前显示了正确的图,但不确定这里出了什么问题。即使我尝试这样做,我也会得到相同的输出。
mask = np.triu(np.ones_like(corr, dtype=bool))
f, ax = plt.subplots(figsize=(11, 9))
cmap = sns.diverging_palette(20, 220, as_cmap=True)
sns.heatmap(corr, mask=mask, cmap=cmap, vmax=0.3, center=0,
square=True, linewidths=.1, cbar_kws={"shrink": .7})
plt.show()
Run Code Online (Sandbox Code Playgroud) azure-databricks ×10
databricks ×6
apache-spark ×2
azure ×2
python ×2
azure-files ×1
c# ×1
matplotlib ×1
pyspark ×1
seaborn ×1