Я пытаюсь провести некоторый анализ некоторых данных о визге. Данные структурированы следующим образом:
>>> yelp_df.printSchema()
root
|-- business_id: string (nullable = true)
|-- cool: integer (nullable = true)
|-- date: string (nullable = true)
|-- funny: integer (nullable = true)
|-- id: string (nullable = true)
|-- stars: integer (nullable = true)
|-- text: string (nullable = true)
|-- type: string (nullable = true)
|-- useful: integer (nullable = true)
|-- user_id: string (nullable = true)
|-- name: string (nullable = true)
|-- full_address: string (nullable = true)
|-- latitude: double (nullable = true)
|-- longitude: double (nullable = true)
|-- neighborhoods: string (nullable = true)
|-- open: boolean (nullable = true)
|-- review_count: integer (nullable = true)
|-- state: string (nullable = true)
Я хочу подсчитать записи для каждого состояния для всего с 10 или более обзорами, которые в настоящее время открыты, и найти состояние с третьим по величине количеством. Сначала я сделал
>>> revDF = yelp_df.filter(yelp_df.review_count > 9)
>>> openDF = revDF.filter(revDF.open == True)
>>> openDF.groupBy("state").agg({"review_count":"sum"}).collect()
что дает это
[Row(state=u'MN', SUM(review_count#16)=3470), Row(state=u'GA', SUM(review_count#16)=5764), Row(state=u'TX', SUM(review_count#16)=1778), Row(state=u'AZ', SUM(review_count#16)=72214), Row(state=u'NY', SUM(review_count#16)=4081), Row(state=u'OR', SUM(review_count#16)=2125), Row(state=u'ID', SUM(review_count#16)=429), Row(state=u'CA', SUM(review_count#16)=1876), Row(state=u'CO', SUM(review_count#16)=6720), Row(state=u'WA', SUM(review_count#16)=525), Row(state=u'LA', SUM(review_count#16)=8394)]
теперь, после сохранения в summedDF,
summedDF.sort(summedDF.state.desc()).collect()
сортирует его по состоянию просто отлично, но (неудивительно)
summedDF.sort(summedDF.SUM(review_count#16).desc()).collect()
не работает. На самом деле он даже не запускается. У меня есть правильное количество скобок, но вместо выполнения он переходит на следующую строку с ...
раньше, ожидая нового ввода.
Как мне это сделать и что происходит с невыполнением? а что с №16?