Apache spark 有没有更好的方法使用Python处理Spark/AWS Glue中的PostgreSQL Hstore

Apache spark 有没有更好的方法使用Python处理Spark/AWS Glue中的PostgreSQL Hstore,apache-spark,pyspark,aws-glue,Apache Spark,Pyspark,Aws Glue,我正在使用AWS Glue对PostgreSQL中存储的数据执行ETL,其中包含许多动态Hstore字段。我需要使用Hstores中的一些字段执行操作 让我来介绍一下我是如何做到这一点的,这样你就可以帮助我做另一个选择,或者让我做得更好 数据从Glue目录加载到DaynamicFrame中 我将DynamicFrame转换为Spark DataFrame,用于一些类似SQL的操作(我不能使用DyanicFrame,因为我需要一些分组、聚合和排序) Glue目录不支持存储并将列作为字符串加载

我正在使用AWS Glue对PostgreSQL中存储的数据执行ETL,其中包含许多动态Hstore字段。我需要使用Hstores中的一些字段执行操作

让我来介绍一下我是如何做到这一点的,这样你就可以帮助我做另一个选择,或者让我做得更好

  • 数据从Glue目录加载到DaynamicFrame中

  • 我将DynamicFrame转换为Spark DataFrame,用于一些类似SQL的操作(我不能使用DyanicFrame,因为我需要一些分组、聚合和排序)

  • Glue目录不支持存储并将列作为字符串加载

  • 使用spark,我将Hstore字符串转换为JSON字符串,然后使用来自_JSON的spark将列作为映射类型加载

    导入pyspark.sql.F函数
    将pyspark.sql.types导入为T
    df=dynamicFrame.toDF()
    df=df.withColumn(“column_from_hstore”)、F.concat(F.lit(“{”)、F.col(“column”)、F.lit(“}”))
    df=df.withColumn(“column_json”,F.regexp_replace(F.col(“column_from_hstore”),“=>”,“:”)
    df=df.withColumn(“column_-map”,F.from_-json(F.col(“column_-json”),T.MapType(T.StringType(),T.StringType()))
    df=df.withColumn(“column\u child”),F.col(“column\u map.child”).cast('int'))
    
  • 最后,我可以使用子字段

    我的其他选择

    我可以将spark直接连接到Postgres,使用原始SQL加载数据并选择所需字段,但这需要我在Glue上管理JDBC连接证书。我找不到一个简单的方法来做这件事

    问题

    因为我是spark的新手,我不知道它的性能如何,或者是否有更好的方法。谢谢你的帮助