Uber问题要求找到每个地下室有更多行程的日子。模式和2行数据如下图所示enter image description here
我在下面使用的代码,但无法执行最后一行“finaldf.show()。这里是错误的屏幕截图。enter image description here
需要帮助吗
from pyspark.sql import SparkSession
from pyspark.sql.functions import expr, sum, rank
from pyspark.sql.window import Window
spark = SparkSession.builder \
.appName("first") \
.getOrCreate()
df1 = spark.read.format("csv") \
.option("header", "true") \
.load("dbfs:/FileStore/tables/uber.csv")
df2 = df1.withColumn("trips",col("trips").cast("integer"))
finaldf = df2.withColumn("Day", expr("DATE_FORMAT(TO_DATE(DATE,'MM/dd/yyyy'),'EEE')")) \
.groupBy("dispatching_base_number", "Day") \
.agg(sum("trips")).alias("Sum") \
.withColumn("rnk", rank().over(Window.partitionBy("dispatching_base_number").orderBy("Sum"))) \
.filter("rnk = 1") \
.drop("rnk")
finaldf.show()
1条答案
按热度按时间68bkxrlz1#
即使我得到了同样的错误,当我运行你的代码。
这是因为你的date输入是
1/1/2017
,给出的表达式是MM/dd/yyyy
。你需要这样给予M/d/yyyy
代码:
输出: