Код Python, возвращающий нераспознанную ошибку

#python #pyspark

#python #pyspark

Вопрос:

Я получаю следующую синтаксическую ошибку

 SyntaxError: invalid syntax
  File "<command-3092209798892761>", line 6
    .agg(avg("sale_price").as("average_price"))
                            ^
  

с помощью следующего кода:

 t1.join(t2, Seq("make", "model"))
  .filter(abs(t2("engine_size") - t1("engine_size")) <= BigDecimal("0.1"))
  .groupBy("registration")
  .agg(avg("sale_price").as("average_price"))
  

Может кто-нибудь помочь пролить свет на ошибку

Комментарии:

1. как и сохраненное ключевое слово в python, вы уверены, что это именно та функция, которую вы хотели запустить?

2. Привет @Mogi, спасибо за обращение. Да, мне это нужно для примера, который я пытаюсь запустить. Кроме того, не могли бы вы сообщить мне, что означает / означает функция Seq()?

3. И можете ли вы объяснить, почему я получаю синтаксическую ошибку?

4. Для вашей информации я получил код отсюда coxautomotivedatasolutions.github.io/datadriven/spark /…

5. ааааа…. У меня только что возникла мысль, может ли код должен быть написан на Scala?

Ответ №1:

as это ключевое слово Python — вы можете увидеть, как оно используется import numpy as np , например.

Это делает невозможным его использование в качестве имени переменной, функции или метода.

Вы должны использовать эквивалент alias при использовании Python:

 t1.join(t2, Seq("make", "model"))
  .filter(abs(t2("engine_size") - t1("engine_size")) <= BigDecimal("0.1"))
  .groupBy("registration")
  .agg(avg("sale_price").alias("average_price"))
  

Комментарии:

1. Тьерри, что касается ваших комментариев по поводу псевдонимов в Python, это то, о чем я думал. Однако, почему я не мог просто использовать us КАК average_price? Кроме того, не могли бы вы сообщить мне, что делает Seq()?

2. Теперь я получаю ошибку в Python NameError: имя ‘t1’ не определено, может быть, мне нужно написать это в Scala?

3. Когда я пытаюсь запустить код в scala, как описано в ссылке, получаю следующую ошибку: command-3092209798892765:2: error: not found: value abs .filter(abs(t2("engine_size") - t1("engine_size")) <= BigDecimal("0.1")) ^ command-3092209798892765:4: error: not found: value avg .agg(avg("sale_price").as("average_price")).collect() ^

4. Я думаю, что для того, чтобы кто-то мог мне помочь, им нужно будет взглянуть на пример из ссылки coxautomotivedatasolutions.github.io/datadriven/spark /…

5. Пожалуйста, обратите внимание, что SO просит, чтобы вопросы были сфокусированы, чтобы у них был шанс быть полезными другим пользователям, имеющим ту же или очень похожую проблему. Поскольку это разные вопросы, вам, вероятно, следует задать другой вопрос, если вам не удастся их решить.