Я думаю, что вы можете искать функции окна: http://spark.apache.org/docs/latest/api/python/pyspark.sql.html?highlight=window#pyspark.sql. Окно
https://databricks.com/blog/2015/07/15/introducing-window-functions-in-spark-sql.html
Вот пример в Scala (теперь у меня нет Spark Shell с Hive, поэтому я не смог проверить код, но я думаю, что он должен работать):
case class MyRow(name: String, id_sa: String, id_sb: String)
val myDF = sc.parallelize(Array(
MyRow("n1", "a1", "b1"),
MyRow("n2", "a1", "b2"),
MyRow("n3", "a1", "b2"),
MyRow("n1", "a2", "b2")
)).toDF("name", "id_sa", "id_sb")
import org.apache.spark.sql.expressions.Window
val windowSpec = Window.partitionBy(myDF("id_sa")).orderBy(myDF("id_sb").desc)
myDF.withColumn("max_id_b", first(myDF("id_sb")).over(windowSpec).as("max_id_sb")).filter("id_sb = max_id_sb")
Вероятно, есть более эффективные способы достижения тех же результатов с помощью функций Window, но я надеюсь, что это указывает на правильное направление.
Редактировать: Как отмечено в комментариях, фактическая проблема, затронутая в этом вопросе, на самом деле является ошибкой в IntelliJ 15 / WebStorm 11 (см. https://youtrack.jetbrains.com/issue/WEB-18768 ). Я оставляю ответ ниже, потому что многие люди приходят сюда в поисках предложенного решения.
Принятый ответ - кувалдный подход к решению проблемы. Лучшее решение - включить библиотеку mocha-DefiniteTyped для тестовой директории. Это не только устранит ошибочную проверку, но и обеспечит лучшую подсветку синтаксиса.
Из описания проверки:
При использовании библиотек, которые определяют свои собственные глобальные символы вне видимого кода JavaScript (например,
describe()
в Mocha), рекомендуется добавить соответствующий Файл определения типа TypeScript как библиотека JavaScript в Предпочтения | Языки и Рамки | JavaScript | Библиотеки.
Перейдите к разделу настроек, указанному выше, «Настройки | Языки и Рамки | JavaScript | Библиотеки »и проверьте, есть ли в списке библиотека mocha-DefinitiveTyped.
Если @types/mocha
(раньше назывался mocha-DefinitelyTyped
) нет в списке, нажмите кнопку Download…
, найдите «mocha» в разделе «Заглушки сообщества TypeScript», выберите его и нажмите «Загрузить и установить» :
Библиотека имеет в списке только mocha
, но преобразуется в @types/mocha
(до начала 2019 г., он будет преобразован в mocha-DefinitelyTyped
) после импорта.
Как только у вас есть mocha-DefiniteTyped, снимите флажок «Включено». Если оставить его полностью проверенным, это позволит сделать это глобально, даже вне тестов, что будет неточным. Вместо этого мы сделаем так, чтобы его область действия была включена только в вашем тестовом каталоге. Нажмите кнопку Manage Scopes…
, найдите тестовый каталог, щелкните столбец «Библиотека» и выберите запись «mocha-DefinitiveTyped». Смотрите скриншот ниже.
Это новая проверка, введенная в v. 11 - она проверяет, есть ли ссылка на модуль, используемый в коде, с помощью оператора require (). Эта проверка, действительно, является избыточной для тестов мокко («описывать» и другие вещи не нужно явно требовать, поскольку они добавляются в глобальную область видимости Мокко). Вы можете отключить эту проверку или отключить ее для «описания», «ее» и т. Д. (См. https://www.jetbrains.com/webstorm/help/suppressing-inspections.html ). Другой вариант: создать настраиваемую область с исключенными вашими спецификационными файлами («Настройки» / «Внешний вид» и «Поведение / области действия»), затем выберите эту область для проверки «Отсутствует требование () оператора» (Настройки / Редактор / Инспекции / Javascript / Node.js).
Билет по теме: WEB-18768
В настоящее время в Webstorm 2017.3 имеется ошибка, которая препятствует установке библиотек Javascript через ‘Предпочтения | Языки и Рамки | JavaScript | Библиотеки | Скачайте и установите метод.
Это отслеживается здесь, и последняя версия EAP (Ранний предварительный доступ) (Webstorm 2017.3.2 на момент написания статьи) устраняет проблему. https://youtrack.jetbrains.com/oauth?state=%2Fissue%2FWEB-29725
Я несколько часов стучал головой об стену, надеюсь, это поможет кому-то еще.
Если вы уже установили mocha глобально, и если он все еще не работает, попробуйте удалить все конфигурации Run / Debug.
Это обновит npm runner, и я надеюсь, что это решит проблему.