我尝试将spark dataframe转换为pandas,但它在新版本的pandas上出错,并在旧版本的pandas上警告用户。
在python==3.9、pyspark==3.4.0和pandas==1.5.3上,警告如下所示:
/Users/[me]/miniconda3/envs/py39/lib/python3.9/site-packages/pyspark/sql/pandas/conversion.py:251: FutureWarning: Passing unit-less datetime64 dtype to .astype is deprecated and will raise in a future version. Pass 'datetime64[ns]' instead
series = series.astype(t, copy=False)
我没有pandas==2.0.0上的确切错误的副本,但它基本上是一样的,它希望你传递datetime64[ns]。
下面是pyspark中抛出此错误的行。
下面是一个我正在尝试执行的导致此错误的示例:
from pyspark.sql.types import StructType,StructField, StringType, IntegerType, TimestampType, FloatType
from pyspark.sql import SparkSession
spark = (
SparkSession
.builder
.getOrCreate()
)
testAggData = [
{
'postId': '1234567',
'title': 'Test1',
'createdTSUTC': datetime.strptime('2023-04-19 03:14:30', '%Y-%m-%d %H:%M:%S'),
},
{
'postId': '1234568',
'title': 'Test2',
'createdTSUTC': datetime.strptime('2023-04-20 03:14:30', '%Y-%m-%d %H:%M:%S'),
}
]
testSchema = StructType([
StructField("postId",StringType(),False),
StructField("title",StringType(),False),
StructField("createdTSUTC", TimestampType(), False),
])
testAggDataDf = spark.createDataFrame(testAggData, testSchema).toPandas()
1条答案
按热度按时间vlju58qv1#
我想出来了,pyspark 3.4.0 requires pandas 1.0.5。所以我想我在安装其他东西的时候升级了pandas,没有意识到这个要求。降级pandas解决了这个问题。