我们在Spark 3.2中使用数据类型依赖逻辑。对于interval year
数据类型,DataFrame
方法schema
和dtypes
似乎不起作用。
没有interval year
类型列,这些方法工作得很好:
df1 = spark.range(1)
df1.printSchema()
# root
# |-- id: long (nullable = false)
print(df1.schema)
# StructType(List(StructField(id,LongType,false)))
print(df1.dtypes)
# [('id', 'bigint')]
字符串
但是当我添加一个新列时,schema
和dtypes
方法开始抛出解析错误:
df2 = df1.withColumn('col_interval_y', F.expr("INTERVAL '2021' YEAR"))
df2.printSchema()
# root
# |-- id: long (nullable = false)
# |-- col_interval_y: interval year (nullable = false)
print(df2.schema)
# ValueError: Unable to parse datatype from schema. Could not parse datatype: interval year
print(df2.dtypes)
# ValueError: Unable to parse datatype from schema. Could not parse datatype: interval year
型
为了让我们的逻辑工作,我们需要访问一个框架的列数据类型。我们如何在Spark 3.2中访问interval year
类型?(Spark 3.5不会抛出错误,但我们还不能使用它)
1条答案
按热度按时间b1zrtrql1#
我发现可以使用底层的
_jdf
。以下代码重新创建了
dtypes
的结果:字符串