【发布时间】:2020-05-31 20:04:13
【问题描述】:
这就是我在pyspark 中创建具有原始数据类型的数据框的方法:
from pyspark.sql.types import StructType, StructField, DoubleType, StringType, IntegerType
fields = [StructField('column1', IntegerType(), True), StructField('column2', IntegerType(), True)]
schema = StructType(fields)
df = spark.createDataFrame([], schema)
values = [tuple([i]) +
tuple([i])
for i in range(3)]
df = spark.createDataFrame(values, schema)
现在,如果我想要第三列包含字典数据,例如:{"1": 1.0, "2": 2.0, "3": 3.0},我应该怎么做? 我想创建这个数据框:
+--------------------+-----------------+------------------------------+
|column1 |column2 |column3 |
+--------------------+-----------------+------------------------------+
|1 |1 |{"1": 1.0, "2": 1.0, "3": 1.0}|
+--------------------+-----------------+------------------------------+
|2 |2 |{"1": 2.0, "2": 2.0, "3": 2.0}|
+--------------------+-----------------+------------------------------+
|3 |3 |{"1": 3.0, "2": 3.0, "3": 3.0}|
+--------------------+-----------------+------------------------------+
有一个 MapType 似乎很有帮助,但我不知道如何使用它?
假设数据框已创建,如何根据第三列对其进行过滤,给定一个dict来选择具有该dict值的数据框的行?
【问题讨论】:
标签: python pyspark apache-spark-sql