apache-spark - 如何在pyspark中将行转换为字典列表?

标签 apache-spark pyspark apache-spark-sql

通过从配置单元表中读取,我在 pyspark 中有一个 DataFrame(df):

df=spark.sql('select * from <table_name>')


+++++++++++++++++++++++++++++++++++++++++++
|  Name    |    URL visited               |
+++++++++++++++++++++++++++++++++++++++++++
|  person1 | [google,msn,yahoo]           |
|  person2 | [fb.com,airbnb,wired.com]    |
|  person3 | [fb.com,google.com]          |
+++++++++++++++++++++++++++++++++++++++++++

当我尝试以下操作时,出现错误
df_dict = dict(zip(df['name'],df['url']))
"TypeError: zip argument #1 must support iteration."
type(df.name) is of 'pyspark.sql.column.Column'
我如何创建一个像下面这样的字典,以后可以迭代
{'person1':'google','msn','yahoo'}
{'person2':'fb.com','airbnb','wired.com'}
{'person3':'fb.com','google.com'}

感谢您的想法和帮助。

最佳答案

我觉得你可以试试row.asDict() ,这段代码直接运行在executor上,不需要在driver上收集数据。

就像是:

df.rdd.map(lambda row: row.asDict())

关于apache-spark - 如何在pyspark中将行转换为字典列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49432167/

相关文章:

apache-spark - spark2.xx 是否支持 delta lake

hadoop - 乔布斯 Spark 失败

scala - 数据帧空值在 UDF 后转换为 0。为什么?

r - 有没有办法使用 dplyr 用 0 填充缺失的日期?

apache-spark - 如何在pyspark中获取ArrayType()另一列中某一列的值的索引?

python - 如何在pyspark中使用正则表达式替换特殊字符

apache-spark - 在 pyspark 中将 array[string] 转换为 array[float]

apache-spark - 如何使用 Spark SQL 列出数据库中的所有表?

java - 如何在不指定每一列的情况下将整行作为参数传递给 Spark (Java) 中的 UDF?

pyspark - 如何在spark sql中左移列值?