当 sink 是二进制数据集时,源必须是二进制

Posted

技术标签:

【中文标题】当 sink 是二进制数据集时,源必须是二进制【英文标题】:Source must be binary when sink is binary dataset 【发布时间】:2021-09-18 02:35:30 【问题描述】:

我正在尝试从网页下载一个 csv 文件(api 返回一个 csv 文件,而不是 json),并将其存储在数据湖 gen 2 中。所以我为网页创建了链接服务,为网页创建了数据集,我似乎没有在哪里指定数据源的文件类型。然后我用 ADLS2 创建了链接服务,也是 ADLS2 的数据集,采用二进制格式。

当我尝试通过按调试来运行它时,它给了我错误消息:

Copy data1
Source must be binary when sink is binary dataset.

所以我想知道系统如何知道源不是二进制数据集,我该如何解决这个问题

谢谢

【问题讨论】:

这意味着当您为网页(HTTP?)创建数据集时,您选择了二进制以外的其他内容。你能显示源数据集的配置吗? 谢谢!我已经为源数据中使用的数据集和链接服务添加了图像 我无法从屏幕截图中看出底层数据类型是什么。当您创建 HTTP 数据集时,它会询问您引用的是哪种数据(定界、JSON、二进制等)。如果不是二进制,则不能将其用作写入另一个二进制的源数据集。二进制的限制在于,活动的双方都必须定义为二进制。 在复制活动中使用二进制数据集时,您只能从二进制数据集复制到二进制数据集。您可以尝试使用 HTTP 连接器并在源代码中选择二进制数据集吗?请让我知道这是否有效。参考:***.com/questions/58993778/… @Bruce - 你能解决这个问题吗? 【参考方案1】:

注意:在复制活动中使用二进制数据集时,您只能从二进制数据集复制到二进制数据集。

如果您使用REST linked service 将二进制源数据作为二进制复制到接收器,则会引发错误,因为我们没有选择数据集类型的选项。

相反,您可以使用HTTP connector 类型并从选项中选择二进制数据集以复制二进制数据。

【讨论】:

感谢您分享您的知识。我遇到过同样的问题。你的建议解决了。

以上是关于当 sink 是二进制数据集时,源必须是二进制的主要内容,如果未能解决你的问题,请参考以下文章

如何增加 ASP.NET Core 二进制文件(32 位)的堆栈大小?

Flume 将 txt 文件更改为二进制文件

在 Seizure 数据集上使用 Keras 进行二进制分类

Autotools 交叉编译和生成源

创建训练时显示的数据集时出错?

您如何将图像标签的源设置为二进制图像数据,我所看到的没有啥对我有用[重复]