我想知道加载增量表特定分区的最佳方法是什么?选项 2 是否在过滤之前加载所有表?
df = spark.read.format("delta").option('basePath','/mnt/raw/mytable/')\
.load('/mnt/raw/mytable/ingestdate=20210703')
Run Code Online (Sandbox Code Playgroud)
(这里需要basePath选项吗?)
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
所以我有一个数据工厂,它调用一个读取 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
我遇到了数据块中记录损坏的问题。我们想要对损坏的记录进行计数,并将损坏的记录保存在特定位置作为增量表。为此,我们正在阅读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)
但我不确定它会比缓存占用更少的内存!
任何建议或意见将不胜感激!提前致谢
我正在尝试返回数据工厂中的日期数组。但我只想用户指定带有两个参数 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 还没有找到简单的方法来做到这一点。我想到的一种方法是:
但这似乎很麻烦而且矫枉过正。有更简单的方法吗?
编辑 :
这个答案似乎是相关的(我一开始没有看到它):用开始日期和结束日期执行 azure datafactory foreach 活动
我的一个 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()
我得到这个:
修复 2:在初始合并后,“重置数据框”,以获得一个新的数据框。这工作得很完美,但并不是很好。
df = pd.DataFrame.from_dict(drift.to_dict())
Run Code Online (Sandbox Code Playgroud)
我的数据是否已损坏?如何 ?
任何级别的反馈都将不胜感激(无论您是否知道错误的原因 - 这将是伟大的! - 或不),只是为了让我更好地了解幕后可能发生的事情。
非常期待这里的任何建议或意见。谢谢 !
我对 Bot Framework 很陌生,正在探索解决方案。
\n\n我正在尝试在Android 应用程序(以及之后的 python Flask 应用程序)中使用 microsoft bot 框架作为 API 调用。为此,我想弄清楚如何向我的机器人发送消息并通过邮递员接收答案
\n\n现在我的机器人已经启动并在团队和网络聊天中运行。我正在使用机器人服务来利用微软机器人框架。我的应用程序在 Heroku 上运行,机器人托管在 Azure 上。
\n\n\n\n我已经检查了 bot 服务上的直接线路通道,但这正在返回一个用于网络聊天的 iframe,我想通过 python、java 等以编程方式发送我的消息作为 api 调用\n
我还检查了有关 v3 机器人框架的 stackoverflow 问题,并尝试了以下操作:\n如何将我的 python 机器人连接到 microsoft 机器人连接器
\n\n从 Postman 向 Microsoft Bot 发送消息
\n\nhttps://pypi.org/project/botframework-connector/
\n\n1\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}\nRun Code Online (Sandbox Code Playgroud)\n\n2\xc2\xb0 然后向邮递员提供带有此网址的不记名令牌https://directline.botframework.com/v3/directline/conversations/
\n\n和这个 json 原始主体:
\n\n …我试图让一些机器人样本在我的机器上工作
https://github.com/microsoft/BotBuilder-Samples。
我对这个特别感兴趣
https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/csharp_dotnetcore/13.core-bot
当我运行机器人时,它没有连接到 Luis(请参阅下面的错误消息)。
然后我只需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) apache-spark ×2
azure ×2
botframework ×2
pyspark ×2
.net-core ×1
azure-language-understanding ×1
caching ×1
corrupt ×1
databricks ×1
date ×1
delta-lake ×1
group-by ×1
multi-index ×1
pandas ×1
partitioning ×1
permissions ×1
postman ×1
python ×1
python-3.x ×1