Код: Выделить всё
import pyspark.sql.functions as F
from pyspark.sql.types import *
l = [('Alice', 1)]
df = sqlContext.createDataFrame(l, ['name', 'age'])
df = df.withColumn('foo', F.when(df['name'].isNull(),False).otherwise(True))
df.schema.fields
[StructField(name,StringType,true),
StructField(age,LongType,true),
StructField(foo,BooleanType,false)]
Уведомление что поле foo не имеет значения NULL. Проблема в том, что (по причинам, в которые я не буду вдаваться) я хочу, чтобы оно допускало значение NULL. Я нашел этот пост «Изменить свойство столбца, допускающее значение null, в Spark DataFrame», в котором предлагался способ сделать это, поэтому я адаптировал приведенный в нем код к следующему:
Код: Выделить всё
import pyspark.sql.functions as F
from pyspark.sql.types import *
l = [('Alice', 1)]
df = sqlContext.createDataFrame(l, ['name', 'age'])
df = df.withColumn('foo', F.when(df['name'].isNull(),False).otherwise(True))
df.schema.fields
newSchema = [StructField('name',StringType(),True), StructField('age',LongType(),True),StructField('foo',BooleanType(),False)]
df2 = sqlContext.createDataFrame(df.rdd, newSchema)
TypeError: StructField(name,StringType,true) не является сериализуемым JSON
Я также вижу это в трассировке стека:
raise ValueError("Циркулярная ссылка обнаружено")
Так что я немного застрял. Может ли кто-нибудь изменить этот пример таким образом, чтобы я мог определить фрейм данных, в котором столбец foo имеет значение NULL?
Подробнее здесь: https://stackoverflow.com/questions/460 ... -dataframe
Мобильная версия