小编Gui*_*abs的帖子

在 databricks 中加载增量表特定分区的最佳实践是什么?

我想知道加载增量表特定分区的最佳方法是什么?选项 2 是否在过滤之前加载所有表?

选项1 :

df = spark.read.format("delta").option('basePath','/mnt/raw/mytable/')\
   .load('/mnt/raw/mytable/ingestdate=20210703')
Run Code Online (Sandbox Code Playgroud)

(这里需要basePath选项吗?)

选项2:

df = spark.read.format("delta").load('/mnt/raw/mytable/')
df = df.filter(col('ingestdate')=='20210703')
Run Code Online (Sandbox Code Playgroud)

提前谢谢了 !

partitioning apache-spark pyspark azure-databricks delta-lake

6
推荐指数
1
解决办法
9306
查看次数

Azure 权限:无权执行此操作

所以我有一个数据工厂,它调用一个读取 blob 存储的 Azure 函数。

我不明白为什么我会收到此错误。“此请求无权执行此操作”。是数据工厂、azure 存储还是azure 功能的问题吗?

我还向 Storage Blob Data Contributor 添加了服务主体,但没有成功。

我应该在存储资源管理器中对此特定文件夹添加什么权限?在此输入图像描述

{
    "name": "TPFunction",
    "instanceId": "4ef6513ebfc6bb",
    "runtimeStatus": "Failed",
    "input": {
        "environment": "dev",
        "DateToProcess": "2013-04-08",
        "SourceStorageType": "AdlsGen2",
        "SourceAccountName": "storage06",
        "SourceBlobContainer": "data",
        "SourceFilePath": "file/file/file"
    },
    "customStatus": null,
    "output": "Orchestratorfunction 'TPFunction' failed: Following error occurred during execution: The activity function 'TPFunction' failed: \"Error occurred getting list of files: This request is not authorized to perform this operation using this permission.\nRequestId:7b5e-e4a603\nTime:2013-04-08:02:27.0924606Z\r\nStatus: 403 (This request is not authorized to perform this …
Run Code Online (Sandbox Code Playgroud)

permissions azure azure-data-factory azure-blob-storage azure-functions

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

如何在不使用 Azure Databricks 中的 Pyspark 缓存数据的情况下查询损坏记录?

我遇到了数据块中记录损坏的问题。我们想要对损坏的记录进行计数,并将损坏的记录保存在特定位置作为增量表。为此,我们正在阅读PERMISSIVE_corrupt_record专栏的使用内容并进行查询。

我们在 Azure Databricks 中将 pyspark 与 Apache Spark 3.0.1 结合使用。

这是我们收到的错误消息:

从 Spark 2.3 开始,当引用的列仅包含内部损坏记录列(默认情况下名为 _corrupt_record)时,不允许从原始 JSON/CSV 文件进行查询。例如:spark.read.schema(schema).json(file).filter($"_corrupt_record".isNotNull).count()和spark.read.schema(schema).json(file).select("_corrupt_record" )。展示()。

根据此文档,如果要查询列损坏记录,则必须缓存或保存数据。

在此输入图像描述

但我们不想在 ETL 中缓存数据。ETL 用于在同一集群上运行的许多作业,我们可以将 150GB 的大文件作为输入。缓存数据可能会导致集群崩溃。

有没有办法在缓存数据的情况下查询这些损坏的记录?

#1 将数据保存在 blob 存储上可能是另一种选择,但这听起来开销很大。

#2 我们还尝试使用选项BadRecordsPath:将坏记录保存到 BadRecordsPath 并读回以进行计数,但是没有简单的方法可以知道坏记录文件是否已被写入(以及该文件位于哪个分区)书面)。分区看起来像/20210425T102409/bad_records

在这里查看我的其他问题

#3 另一种方法是从许可读取中减去 dropmalformed 读取。例如:

dataframe_with_corrupt = spark.read.format('csv').option("mode", "PERMISSIVE").load(path)
dataframe_without_corrupt = spark.read.format('csv').option("mode", "DROPMALFORMED").load(path)

corrupt_df = dataframe_with_corrupt.exceptAll(dataframe_without_corrupt)
Run Code Online (Sandbox Code Playgroud)

但我不确定它会比缓存占用更少的内存!

任何建议或意见将不胜感激!提前致谢

caching corrupt apache-spark pyspark databricks

5
推荐指数
0
解决办法
1339
查看次数

Azure数据工厂:返回指定范围内的日期数组

我正在尝试返回数据工厂中的日期数组。但我只想用户指定带有两个参数 startDate 和 endDate 的日期范围:

我想通过在触发器中指定“12-08-2020”和“12-13-2020”来返回此数组:

["12-08-2020","12-09-2020","12-10-2020","12-12-2020","12-13-2020"]
Run Code Online (Sandbox Code Playgroud)

Do 还没有找到简单的方法来做到这一点。我想到的一种方法是:

  • 在日期维度上添加查找活动,
  • 然后添加两个过滤器以仅选择大于 startDate 且小于 endDate 的项目。

但这似乎很麻烦而且矫枉过正。有更简单的方法吗?


编辑 :


这个答案似乎是相关的(我一开始没有看到它):用开始日期和结束日期执行 azure datafactory foreach 活动

date azure-data-factory

3
推荐指数
1
解决办法
3204
查看次数

groupby 上的“值的长度与索引的长度不匹配”

我的一个 databricks 笔记本中的 pandas groupby 遇到了一个奇怪的错误。

数据是机密的,因此这是我的错误的虚拟说明数据帧 df 实际上是其他两个数据帧合并的结果)。

如果你想重现数据框:

data = {'group1':  ['a', 'b','a','a','a'],
        'group2': ['f', 'f', 'f' , 'f', 'f'],
         'aggregate': ['1', '2','3','4','5'],}
df = pd.DataFrame (data, columns = ['group1','group2','aggregate'])
Run Code Online (Sandbox Code Playgroud)

在此阶段,数据帧 df 已正确显示。现在我正在做一个groupby:

agg = df.groupby(['group2', 'group1'],  as_index=False).agg({'aggregate':', '.join})
Run Code Online (Sandbox Code Playgroud)

我应该得到这个:

在此输入图像描述

但我得到这个:

ValueError:值的长度与索引的长度不匹配

“使其发挥作用”的唯一方法是:

修复1: agg = df.groupby(['group2', 'group1'], as_index=True).agg({'aggregate':', '.join}).reset_index()

我得到这个:

group2 group1 聚合 0 fa 1, 3, 4, 5 1 fb 2 2 f NaN

修复 2:在初始合并后,“重置数据框”,以获得一个新的数据框。这工作得很完美,但并不是很好。

df = pd.DataFrame.from_dict(drift.to_dict())
Run Code Online (Sandbox Code Playgroud)

我的数据是否已损坏?如何 ?

任何级别的反馈都将不胜感激(无论您是否知道错误的原因 - 这将是伟大的! - 或不),只是为了让我更好地了解幕后可能发生的事情。

非常期待这里的任何建议或意见。谢谢 !

python group-by multi-index python-3.x pandas

3
推荐指数
1
解决办法
2642
查看次数

通过 Postman 与您的 microsoft bot 框架聊天

我对 Bot Framework 很陌生,正在探索解决方案。

\n\n

我正在尝试在Android 应用程序(以及之后的 python Flask 应用程序)中使用 microsoft bot 框架作为 API 调用。为此,我想弄清楚如何向我的机器人发送消息并通过邮递员接收答案

\n\n

现在我的机器人已经启动并在团队和网络聊天中运行。我正在使用机器人服务来利用微软机器人框架。我的应用程序在 Heroku 上运行,机器人托管在 Azure 上。

\n\n

在此输入图像描述

\n\n

我已经检查了 bot 服务上的直接线路通道,但这正在返回一个用于网络聊天的 iframe,我想通过 python、java 等以编程方式发送我的消息作为 api 调用\n在此输入图像描述

\n\n

我还检查了有关 v3 机器人框架的 stackoverflow 问题,并尝试了以下操作:\n如何将我的 python 机器人连接到 microsoft 机器人连接器

\n\n

从 Postman 向 Microsoft Bot 发送消息

\n\n

https://pypi.org/project/botframework-connector/

\n\n

1\xc2\xb0 我在第二个 stackoverflow url 之后访问了我的不记名令牌:

\n\n
{\n   "token_type": "Bearer",\n   "expires_in": 3600,\n   "ext_expires_in": 3600,\n   "access_token": "eyJ0eXAiOiJKV1QiL***********************************ObNWg"\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

2\xc2\xb0 然后向邮递员提供带有此网址的不记名令牌https://directline.botframework.com/v3/directline/conversations/

\n\n

和这个 json 原始主体:

\n\n …

postman botframework

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

无法在 Azure 机器人框架中调用 Luis

在此处输入图片说明我是 dotnet 以及 Luis 和机器人框架的菜鸟。

我试图让一些机器人样本在我的机器上工作

https://github.com/microsoft/BotBuilder-Samples

我对这个特别感兴趣

https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/csharp_dotnetcore/13.core-bot

当我运行机器人时,它没有连接到 Luis(请参阅下面的错误消息)。

  • 我通过导入应用程序中提供的意图在 Luis 中创建并发布了一个应用程序。
  • 我在正确的 JSON 文件中写入了 LuisAppId、LuisAPIKey 和 LuisAPIHostName(见下文)。
  • 我在项目中添加了 dotnet 库: dotnet add package Cognitive.LUIS.Programmatic

然后我只需cmd "dotnet run"在正确的文件夹中运行代码。

这里是app.setting JSON。我使用订阅密钥作为 LuisAPIKey,应用 ID 作为 LuisAppId。

{
  "MicrosoftAppId": "",
  "MicrosoftAppPassword": "",
  "LuisAppId": "2aa2b9c5-#######################7b557",
  "LuisAPIKey": "1069d###############4347da9",
  "LuisAPIHostName": "westus.api.cognitive.microsoft.com/luis/api/v2.0"
}
Run Code Online (Sandbox Code Playgroud)

该机器人正在我的本地主机上运行。但它不起作用。

bot : 今天有什么可以帮到你的吗?像这样说“预订 2020 年 3 月 22 日从巴黎飞往柏林的航班”

我:“请预订 2020 年 3 月 22 日从巴黎飞往柏林的航班”

bot :“机器人遇到错误或错误。”

bot :“要继续运行此机器人,请修复机器人源代码”


On the cmd line : 
"fail: Microsoft.Bot.Builder.Integration.AspNet.Core.BotFrameworkHttpAdapter[0] …
Run Code Online (Sandbox Code Playgroud)

azure .net-core botframework azure-language-understanding

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