映射数据流可以使用参数化 Parquet 数据集吗?

Posted

技术标签:

【中文标题】映射数据流可以使用参数化 Parquet 数据集吗?【英文标题】:Can a Mapping Data Flow use a parameterized Parquet dataset? 【发布时间】:2021-04-26 09:27:53 【问题描述】:

感谢您的光临。

我正在尝试在 Azure Synapse 工作区中开发一个映射数据流(因此我相信这也适用于 ADFv2),它采用 Delta 输入并将其直接转换为 Parquet 格式的输出,使用使用指向带有参数化文件系统和文件夹的 ADLSGen2 的 Parquet 数据集的相关细节,与硬编码的文件系统和文件夹相反,因为这将需要创建太多数据集,因为感兴趣的文件夹太多在数据湖中。

映射数据流:

当我尝试将其用作映射数据流中的源时,调试配置(以及父管道配置)将适时要求我输入这些参数,我很乐意输入。

然后,当我尝试调试或运行管道时,我会在不到 1 秒的时间内收到此错误:


"Message": "ErrorCode=InvalidTemplate, ErrorMessage=The expression 'body('DataFlowDebugExpressionResolver')?.50_DeltaToParquet_xxxxxxxxx?.ParquetCurrent.directory' is not valid: the string character '_' at position '43' is not expected."

RunId: xxx-xxxxxx-xxxxxx

此错误消息不是很具体,无法知道我应该查看的位置。

我尝试用硬编码的 Parquet 数据集替换参数化的 Parquet 数据集,它在调试和管道运行模式下都能完美运行。但是,这并不能满足我的需要,即能够重用 Parquet 数据集,而不必为每个 Data Lake 文件夹创建特定的数据集。

Data Lake 文件系统中也没有空格。请参考这些看起来很像我的生产环境的参数:

文件系统:prodfs001 目录:synapse/workspace01/parquet/dim_mydim

提前感谢大家,伙计们!

【问题讨论】:

【参考方案1】:

目录名synapse/workspace01/parquet/dim_mydim在dim_mydim中有一个_,可以试试替换下划线吗,或者可以用dimmydim来测试是否有效。

【讨论】:

以上是关于映射数据流可以使用参数化 Parquet 数据集吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Spark SQL 在 Parquet 文件中选择嵌套数组和映射

当我有高度不平衡的数据时,我应该平衡测试集吗?

如何在选择子句中使用参数化列映射 iBATIS 查询?

我可以将 deeplab 微调到 tensorflow 中的自定义数据集吗?

如何并行化 spark.read.parquet()?

请问一下大神行家:使用Navicat for MySQL可以取得2个数据库的并集吗?