将 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 嵌套架构的主要内容,如果未能解决你的问题,请参考以下文章
将 json 字典列转换为键值对行(Redshift+Postgresql)
Redshift REGEXP_SUBSTR 函数的 Spark 替代方案
将 Spark 数据帧写入 Redshift:保存 StructField(user_agent,ArrayType(StringType,true),true)