开发者社区 问答 正文

请教各位大神,我想要在如下数据结构的spark rdd中提取出内嵌的字典

请教各位大神,我想要在如下数据结构的spark rdd中提取出内嵌的字典,如{"a":"115xx","b":"116yy","c":"117zz"},不使用lambda函数,pyspark该如何实现呢?

[{"_1":{"a":"115xx","b":"116yy","c":"117zz"}},{"_1":{"a":"115aa","b":"116bb","c":"117cc"},{"_1":{"a":"115ee","b":"116ff","c":"117gg"}}]

本问题来自阿里云开发者社区的【11大垂直技术领域开发者社群】。 点击这里欢迎加入感兴趣的技术领域群。

展开
收起
茶什i 2019-09-26 17:37:39 855 分享 版权
阿里云 AI 助理回答

在PySpark中处理这样的数据结构,您可以通过RDD的map方法来实现提取内嵌字典的功能,而不需要直接使用lambda函数。不过,实际上在Python中,map函数内部常用的就是匿名函数(也就是lambda),但根据您的要求,我们可以用定义好的普通函数来替代。下面是一个示例:

假设您已经有了一个SparkContext实例sc,并且已经创建了一个包含上述数据的RDD,如下所示:

data = [{"_1":{"a":"115xx","b":"116yy","c":"117zz"}},{"_1":{"a":"115aa","b":"116bb","c":"117cc"}},{"_1":{"a":"115ee","b":"116ff","c":"117gg"}}]
rdd = sc.parallelize(data)

您可以定义一个普通的Python函数来完成提取操作:

def extract_dict(record):
    """从记录中提取内嵌的字典"""
    return record["_1"]

# 使用map转换RDD
extracted_rdd = rdd.map(extract_dict)

这样,extracted_rdd就包含了您想要的结果,即每个元素都是原始字典中的"_1"键对应的字典。

如果您是在Databricks Notebook或者有使用DataFrame和Spark SQL的需求,也可以考虑将RDD转换为DataFrame进行操作,这通常会提供更丰富的功能和更好的性能。但对于您当前的问题,上述RDD操作已经足够解决问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答