Вы передаете искру Column
типа на dt.time
и, следовательно, dt.time
поднимает TypeError
.Вам нужно обернуть вашу функцию Python в пользовательскую функцию (UDF), чтобы передать тип Column
в функцию Python:
import pandas as pd
import datetime as dt
from pyspark.sql.functions import udf
df = pd.DataFrame({"HOURS": [2, 5, 8],
"MIN": [23, 55, 43]})
dfs = sqlContext.createDataFrame(df)
dfs.show()
+-----+---+
|HOURS|MIN|
+-----+---+
| 2| 23|
| 5| 55|
| 8| 43|
+-----+---+
@udf
def create_timestamp(hour, minute):
return dt.time(hour, minute)
dfs.withColumn('TIME', create_timestamp("HOURS", "MIN")).show()
+-----+---+--------------------+
|HOURS|MIN| TIME|
+-----+---+--------------------+
| 2| 23|Time: 2 hours, 23...|
| 5| 55|Time: 5 hours, 55...|
| 8| 43|Time: 8 hours, 43...|
+-----+---+--------------------+