将 Spark 架构转换为 Redshift Spectrum 嵌套架构

Posted

技术标签:

【中文标题】将 Spark 架构转换为 Redshift Spectrum 嵌套架构【英文标题】:Translate Spark Schema to Redshift Spectrum Nested Schema 【发布时间】:2019-08-01 18:28:46 【问题描述】:

在 EMR 集群上使用 Apache Spark,我读入了 xml 数据,推断了架构,并将其以 parquet 格式存储在 s3 上。现在,它本质上是一个嵌套表。

使用 Spark,我有架构。我现在希望能够创建一个外部表供 Redshift Spectrum 查询。

如何将架构从 Spark 提供的格式转换为 Redshift Spectrum 的 CREATE EXTERNAL TABLE 语句所需的格式?

由于我正在处理多个“外部表”,因此手动干扰架构不是一种选择。

我无法找到任何现有工具来执行从 Spark 架构格式到 Redshift Spectrum 外部表格式的转换(请参阅Amazon Nested Table Tutorial)

Spark 架构是 pyspark.sql.types.StructType 我可以使用 schema.jsonValue() 将架构 schema 转换为 json 并编写一个可以进行转换的工具,但如果有一个现有的工具可以做到这一点,我更愿意使用那个。

有什么想法/建议吗?

【问题讨论】:

【参考方案1】:

我最终编写了一个工具来将模式从 pyspark 解析为 Redshift Spectrum。

【讨论】:

我可以使用类似的东西。您有机会开源或分享您的工具吗?

以上是关于将 Spark 架构转换为 Redshift Spectrum 嵌套架构的主要内容,如果未能解决你的问题,请参考以下文章

从 Spark 连接到 Redshift 时无法推断架构

将 json 字典列转换为键值对行(Redshift+Postgresql)

Redshift REGEXP_SUBSTR 函数的 Spark 替代方案

redshift 添加转义字符

将 Spark 数据帧写入 Redshift:保存 StructField(user_agent,ArrayType(StringType,true),true)

Amazon EMR 与 Amazon Redshift