需要帮助检查spark中的数据类型,我需要在spark中转换这个pyspark功能
if dict(df.dtypes)['test_col'] == 'String': ... print "it is String type"
fquxozlt1#
要检查列的数据类型,请使用 schema 功能。检查以下代码。
schema
df .schema .filter(c => c.name == "test_col") // Check your column .map(_.dataType.typeName) .headOption .getOrElse(None)
val dtype = df .schema .filter(a => a.name == "c1") .map(_.dataType.typeName) .headOption .getOrElse(None) if (dtype == "string") println("it is String type")
使用 dtypes 功能。
dtypes
val dtype = df .dtypes .filter(_._1 == "c1") .map(_._2) .headOption .getOrElse(None) if (dtype == "StringType" ) println("it is String type")
jq6vz3qz2#
我修改了本文中的答案,将数据类型包括在模式中。只需将Dataframe的模式传递给函数 flatten 它将为您提供列名及其数据类型。
flatten
def flatten(schema, prefix=None): fields = [] for field in schema.fields: name = prefix + '.' + field.name if prefix else field.name dtype = field.dataType if isinstance(dtype, ArrayType): dtype = dtype.elementType if isinstance(dtype, StructType): fields += flatten(dtype, prefix=name) else: fields.append((name, dtype)) return fields mySchema = flatten(df.schema) print("Schema is here", mySchema)
2条答案
按热度按时间fquxozlt1#
要检查列的数据类型,请使用
schema
功能。检查以下代码。
使用
dtypes
功能。jq6vz3qz2#
我修改了本文中的答案,将数据类型包括在模式中。
只需将Dataframe的模式传递给函数
flatten
它将为您提供列名及其数据类型。