Uber数据分析使用databricks pyspark抛出可疑错误

14ifxucb  于 2023-06-21  发布在  Spark
关注(0)|答案(1)|浏览(92)

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()
68bkxrlz

68bkxrlz1#

即使我得到了同样的错误,当我运行你的代码。

这是因为你的date输入是1/1/2017,给出的表达式是MM/dd/yyyy。你需要这样给予M/d/yyyy
代码:

finaldf = data.withColumn("Day", expr("DATE_FORMAT(TO_DATE(DATE,'M/d/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()

输出:

相关问题