标签: azure-databricks

创建 DataBricks 增量表时检测 CSV 标头?

不用说,我是 Spark DataBricks 和 Delta 的新手。

我正在尝试使用 %sql 从简单的 csv 创建一个增量表,其中第一行是标题行。不幸的是,我似乎无法获得初始 CREATE TABLE 来识别 CSV 中的标题列(请注意,我一直在使用 DataBricks 快速入门作为指南 - https://docs.databricks.com/delta/quick -start.html

我在 Databricks 笔记本中得到的代码是

%sql
CREATE TABLE people
USING delta
LOCATION '/dbfs/mnt/mntdata/DimTransform/People.csv'
Run Code Online (Sandbox Code Playgroud)

我尝试使用 TBLPROPERTIES ("headers" = "true") 但没有成功 - 见下文

%sql
CREATE TABLE people
USING delta
TBLPROPERTIES ("headers" = "true")
AS SELECT *
FROM csv.'/mnt/mntdata/DimTransform/People.csv'
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,csv 数据都会加载到表中,但标题行仅作为第一个标准行包含在数据中。

从 csv 加载时,我如何让这个 %sql CREATE TABLE 将第一个/标题行识别为标题?

谢谢

azure-databricks delta-lake

2
推荐指数
1
解决办法
7257
查看次数

从 azure 数据块中删除 azure sql 数据库行

我在 Azure SQL 数据库中有一个表,我想根据某些条件从 Azure Databricks 中删除选定的行或整个表。目前我正在使用JDBC的truncate属性来截断整个表而不删除它,然后用新的数据帧重写它。

df.write \
     .option('user', jdbcUsername) \
     .option('password', jdbcPassword) \
     .jdbc('<connection_string>', '<table_name>', mode = 'overwrite', properties = {'truncate' : 'true'} )
Run Code Online (Sandbox Code Playgroud)

但是以后我不想每次都截断和覆盖整个表,而是使用 delete 命令。我也无法使用下推查询来实现这一点。对此的任何帮助将不胜感激。

pyspark pyspark-sql azure-sql-database databricks azure-databricks

2
推荐指数
1
解决办法
3227
查看次数

带有 python 的数据块不能使用 fs 模块 AttributeError: 模块 'dbutils' 没有属性 'fs'

我第一次使用 azure databricks 来读取一些文件并尝试使用 python 和 dbutils.fs.ls("/mnt")

但是我收到一条错误消息,说 dbutils 没有 fs 模块。我正在阅读并说所有数据块都已经带有 dbutils。

AttributeError: module 'dbutils' has no attribute 'fs'
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

如果我做

print(dir(dbutils))
Run Code Online (Sandbox Code Playgroud)

['控制台','DBUtils','FileInfo','Iterable','ListConverter','MapConverter','MountInfo','NotebookExit','Py4JJavaError','SecretMetadata','SecretScope','WidgetsHandlerImpl','内置','缓存',' doc ','文件','加载器',' name ',' package ',' spec ','absolute_import','makeTensorboardManager','namedtuple','print_function','range' , 'stderr', 'stdout', 'string_types', 'sys', 'zip']

我发现它假设已经安装了该库 https://docs.databricks.com/user-guide/dev-tools/dbutils.html#dbutils

有魔术吗?我想检查我是否有一个文件被挂载,如果没有挂载并卸载它。

python azure databricks azure-databricks

2
推荐指数
1
解决办法
4303
查看次数

如何使用 Azure Blob 存储挂载数据?

我是 Azure Databricks 的新手,我的导师建议我完成机器学习训练营:

https://aischool.microsoft.com/en-us/machine-learning/learning-paths/ai-platform-engineering-bootcamps/custom-machine-learning-bootcamp

不幸的是,成功设置 Azure Databricks 后,我在步骤 2 中遇到了一些问题。我成功将 1_01_introduction 文件作为笔记本添加到我的工作区。然而,虽然本教程讨论了如何在 Azure Blob 存储中挂载数据,但它似乎跳过了该步骤,这导致接下来的所有教程编码步骤都会引发错误。第一个代码位(教程告诉我运行)以及随后出现的错误包含在下面。

%运行“../presenter/includes/mnt_blob”

找不到笔记本:presenter/includes/mnt_blob。笔记本可以通过相对路径(./Notebook 或 ../folder/Notebook)或绝对路径(/Abs/Path/to/Notebook)指定。确保您指定的路径正确。

堆栈跟踪:/1_01_introduction:python

据我所知,Azure Blob 存储尚未设置,因此我运行的代码(以及以下所有步骤中的代码)无法找到应该是的教程项目存储在 blob 中。各位好心人能提供的任何帮助将不胜感激。

python azure azure-blob-storage azure-databricks

2
推荐指数
1
解决办法
1万
查看次数

无法使用 Azure Databricks 访问已安装的 Azure Data Lake 存储

我正在使用 Azure Databricks。使用 Microsoft Learn 网站上指定的文档,我成功地将 BLOB 存储 (ADLS Gen2) 安装到我的 Databricks。

但是,当我尝试列出已安装存储的内容时,出现以下错误:

ExecutionError: An error occurred while calling z:com.databricks.backend.daemon.dbutils.FSUtils.ls.
: GET https://xxxxxxxxxxxxx.dfs.core.windows.net/xxxxxxx?resource=filesystem&maxResults=5000&timeout=90&recursive=false
StatusCode=403
StatusDescription=This request is not authorized to perform this operation using this permission.
ErrorCode=AuthorizationPermissionMismatch
Run Code Online (Sandbox Code Playgroud)

我已经检查了权限,并且我的 ServicePrincipal 已被分配角色“存储 BLOB 数据贡献者”,该角色允许对我的存储容器进行读/写访问。

有人知道我缺少哪一部分才能使其正常工作吗?非常感谢您的帮助。

azure access-rights azure-data-lake azure-databricks

2
推荐指数
1
解决办法
2843
查看次数

如何使用PySpark读取目录下的Parquet文件?

我在网上搜索了一下,网上提供的解决方案并没有解决我的问题。我正在尝试读取分层目录下的镶木地板文件。我收到以下错误。

'无法推断 Parquet 的架构。必须手动指定。;'

我的目录结构如下: dbfs:/mnt/sales/region/country/2020/08/04

年文件夹下将有多个月份子目录,月份文件夹下将有后续的子目录。

我只想在销售级别阅读它们,这应该为我提供所有区域的信息,并且我已经尝试了以下两个代码,但它们都不起作用。请在这件事上给予我帮助。

spark.read.parquet("dbfs:/mnt/sales/*")
Run Code Online (Sandbox Code Playgroud)

或者

spark.read.parquet("dbfs:/mnt/sales/")
Run Code Online (Sandbox Code Playgroud)

python apache-spark-sql pyspark databricks azure-databricks

2
推荐指数
1
解决办法
2万
查看次数

pyspark 中的 to_json 排除空值,但我需要将空值作为空白

我正在使用 pyspark 中的 to_json 将 dataframe 中的结构列转换为 json 列,但少数结构字段中的空值在 json 中被忽略,我不希望忽略空值。

python struct to-json pyspark azure-databricks

2
推荐指数
1
解决办法
2492
查看次数

在 Azure Databricks 的集群 Spark Config 中设置数据湖连接

我正在尝试在连接到 Azure Data Lake Gen2 帐户的 Azure Databricks 工作区中简化开发人员/数据科学家的笔记本创建过程。现在,每个笔记本的顶部都有这个:

    %scala
    spark.sparkContext.hadoopConfiguration.set("fs.azure.account.auth.type.<datalake.dfs.core.windows.net", "OAuth")
    spark.sparkContext.hadoopConfiguration.set("fs.azure.account.oauth.provider.type.<datalake>.dfs.core.windows.net",  "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
    spark.sparkContext.hadoopConfiguration.set("fs.azure.account.oauth2.client.id.<datalake>.dfs.core.windows.net", <SP client id>)
    spark.sparkContext.hadoopConfiguration.set("fs.azure.account.oauth2.client.secret.<datalake>.dfs.core.windows.net", dbutils.secrets.get(<SP client secret>))
    spark.sparkContext.hadoopConfiguration.set("fs.azure.account.oauth2.client.endpoint.<datalake>.dfs.core.windows.net", "https://login.microsoftonline.com/<tenant>/oauth2/token")
Run Code Online (Sandbox Code Playgroud)

我们的实现试图避免安装在 DBFSS 中,因此我一直在尝试查看是否可以使用集群上的 Spark 配置来定义这些值(每个集群可以访问不同的数据湖)。

但是,我还无法让它发挥作用。当我尝试各种口味时:

org.apache.hadoop.fs.azure.account.oauth2.client.id.<datalake>.dfs.core.windows.net <sp client id>
org.apache.hadoop.fs.azure.account.auth.type.<datalake>.dfs.core.windows.net OAuth
org.apache.hadoop.fs.azure.account.oauth.provider.type.<datalake>.dfs.core.windows.net "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider"
org.apache.hadoop.fs.azure.account.oauth2.client.secret.<datalake>.dfs.core.windows.net {{secrets/secret/secret}}
org.apache.hadoop.fs.azure.account.oauth2.client.endpoint.<datalake>.dfs.core.windows.net "https://login.microsoftonline.com/<tenant>"
Run Code Online (Sandbox Code Playgroud)

我收到“初始化配置失败” 上面的版本看起来默认尝试使用存储帐户访问密钥而不是 SP 凭据(这只是使用一个简单的ls命令进行测试以确保其有效)。

ExecutionError: An error occurred while calling z:com.databricks.backend.daemon.dbutils.FSUtils.ls.
: Failure to initialize configuration
    at shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.services.SimpleKeyProvider.getStorageAccountKey(SimpleKeyProvider.java:51)
    at shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.AbfsConfiguration.getStorageAccountKey(AbfsConfiguration.java:412)
    at shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.AzureBlobFileSystemStore.initializeClient(AzureBlobFileSystemStore.java:1016)
Run Code Online (Sandbox Code Playgroud)

我希望有办法解决这个问题,尽管如果唯一的答案是“你不能这样做”,这当然是一个可以接受的答案。

apache-spark azure-databricks azure-data-lake-gen2

2
推荐指数
1
解决办法
1万
查看次数

获取 StructType 格式的 Parquet 文件的架构

我正在尝试读取镶木地板文件来保存架构,然后在读取 csv 文件时使用此架构将其分配给数据帧。

fee.parquet该文件loan__fee.csv具有相同的内容,但文件格式不同。

下面是我的代码 - 我收到一个错误,架构应该是“StructType”。如何将从镶木地板文件读取的模式转换为 StructType

from pyarrow.parquet import ParquetFile
import pyarrow.parquet
fee_schema = pyarrow.parquet.read_schema("/dbfs/FileStore/fee.parquet", memory_map=True)

df_mod = spark.read.csv('/FileStore/loan__fee.csv', header="true", schema=fee_schema)
Run Code Online (Sandbox Code Playgroud)

它给出错误:

类型错误:架构应该是 StructType 或字符串

我尝试了几个选项,例如fee_schema.to_string(show_schema_metadata = True)但它不起作用并给出 ParseError。

谢谢你的时间!

apache-spark pyspark databricks pyarrow azure-databricks

2
推荐指数
1
解决办法
3657
查看次数

AssertionError:断言失败:没有在 Databricks 中进行 DeleteFromTable 的计划

这个命令运行良好有什么原因吗:

%sql SELECT * FROM Azure.Reservations WHERE timestamp > '2021-04-02'
Run Code Online (Sandbox Code Playgroud)

返回 2 行,如下:

%sql DELETE FROM Azure.Reservations WHERE timestamp > '2021-04-02'
Run Code Online (Sandbox Code Playgroud)

失败并显示:

SQL语句中的错误:AssertionError:断言失败:没有DeleteFromTable的计划(timestamp#394 > 1617321600000000)

我是 Databricks 新手,但我确信我在另一个表上运行了类似的命令(没有 WHERE 子句)。该表是基于 Parquet 文件创建的。

apache-spark databricks azure-databricks delta-lake

2
推荐指数
1
解决办法
8767
查看次数