微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

生成Spark模式代码/持久性和重用模式

如何解决生成Spark模式代码/持久性和重用模式

我正在从Parquet数据源实现一些Spark结构化流转换。为了将数据读入流式DataFrame中,必须指定架构(无法自动推断)。模式真的很复杂,手动编写模式代码将是非常复杂的任务。

您能建议一个解决方案吗?目前,我正在预先创建一个批处理DataFrame(使用相同的数据源),Spark会推断出架构,然后将架构保存到Scala对象,并将其用作结构化流阅读器的输入。

我认为这不是一个可靠或性能良好的解决方案。请提出如何自动生成模式代码或以某种方式将模式保留在文件中并重用的建议。

解决方法

从文档中

默认情况下,基于文件的源中的结构化流要求您 指定模式,而不是依靠Spark来推断它 自动。此限制可确保将一个一致的架构 用于流查询,即使失败也是如此。临时 用例,您可以通过设置重新启用模式推断 spark.sql.streaming.schemaInferencetrue

您还可以打开一个外壳,读取其中一个启用了自动模式推断的镶木地板文件,然后save the schema to JSON for later reuse。您只需执行一次,因此它可能比执行您现在使用的类似声音的解决方法更快/更有效。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。