我正在尝试在PySpark中复制此问题的解决方案(Spark <2.3,因此没有map_keys):How to get keys and values from MapType column in SparkSQL DataFrame下面是我的代码(与上面链接的问题相同的df):
import pyspark.sql.functions as F
distinctKeys = df\
.select(F.explode("alpha"))\
.select("key")\
.distinct()\
.rdd
df.select("id", distinctKeys.map(lambda x: "alpha".getItem(x).alias(x))
但是,此代码给出错误:AttributeError: 'PipelineRDD' object has no attribute '_get_object_id'
。关于如何解决它的任何想法?
尝试创建distinctKeys作为字符串列表,然后使用列表推导将每个键设置在其自己的列上: