映射数据流可以使用参数化 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 文件中选择嵌套数组和映射