gpt4 book ai didi

python - 是什么导致 'unicode' 对象在 pyspark 中没有属性 'toordinal'?

转载 作者:太空狗 更新时间:2023-10-30 02:41:19 26 4
gpt4 key购买 nike

我遇到了这个错误,但我不知道是什么原因造成的。我的 python 代码在 pyspark 中运行。堆栈跟踪很长,我只展示了其中的一些。所有的堆栈跟踪都没有显示我的代码,所以我不知道去哪里找。此错误的可能原因是什么?

/usr/hdp/2.4.2.0-258/spark/python/lib/py4j-0.9-src.zip/py4j/protocol.py in get_return_value(answer, gateway_client, target_id, name)
306 raise Py4JJavaError(
307 "An error occurred while calling {0}{1}{2}.\n".
--> 308 format(target_id, ".", name), value)
309 else:
310 raise Py4JError(

Py4JJavaError: An error occurred while calling o107.parquet.

...
File "/usr/hdp/2.4.2.0-258/spark/python/lib/pyspark.zip/pyspark/sql/types.py", line 435, in toInternal
return self.dataType.toInternal(obj)
File "/usr/hdp/2.4.2.0-258/spark/python/lib/pyspark.zip/pyspark/sql/types.py", line 172, in toInternal
return d.toordinal() - self.EPOCH_ORDINAL
AttributeError: 'unicode' object has no attribute 'toordinal'

谢谢,

最佳答案

特定异常是由于尝试将 unicode 值存储在作为结构一部分的 date 数据类型中引起的。 Python 类型到 Spark 内部表示的转换预计能够调用 date.toordinal()方法。

大概您在某个地方有一个数据框模式,它由一个带有日期字段的结构类型组成,并且试图将字符串填充到其中。

您可以根据您确实拥有的追溯来追踪这一点。 Apache Spark source code托管在 GitHub 上,您的回溯指向 pyspark/sql/types.py file .这些线指向 StructField.toInternal() method ,它委托(delegate)给 self.dataType.toInternal() 方法:

class StructField(DataType):
# ...
def toInternal(self, obj):
return self.dataType.toInternal(obj)

在你的回溯中它最终在 DateType.toInternal() method 处结束:

class DateType(AtomicType):
# ...
def toInternal(self, d):
if d is not None:
return d.toordinal() - self.EPOCH_ORDINAL

所以我们知道这是关于结构中的日期字段。 DateType.fromInternal() 向您展示了相反方向生成的 Python 类型:

def fromInternal(self, v):
if v is not None:
return datetime.date.fromordinal(v + self.EPOCH_ORDINAL)

可以安全地假设 toInternal() 在向另一个方向转换时期望相同​​的类型。

关于python - 是什么导致 'unicode' 对象在 pyspark 中没有属性 'toordinal'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39757591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com