объект dataframe не вызывается в pyspark

1
temp = Window.partitionBy("id").orderBy("time").rowsBetween(-5, 5)
spark_df.withColumn("movingAvg",fn.avgspark_df("average")).over(temp)).show()

Я получаю эту ошибку в последней строке.

объект dataframe не может быть вызван

  • 3
    пожалуйста, прочитайте stackoverflow.com/help/how-to-ask
  • 0
    что-то не так с вашей круглой скобкой - слишком много закрыто
Показать ещё 1 комментарий
Теги:
apache-spark-sql
pyspark

2 ответа

0
Лучший ответ

Вам не хватает скобки, но также кажется, что некоторые из синтаксиса ошибочны. Я предполагаю, что это то, что ваш код был до того, как скобка исчезла:

fn.avgspark_df("average")

Вот почему вы получаете ошибку; вы пытаетесь вызвать DataFrame как функцию. Я считаю, что вы можете добиться того, чего хотите:

import pyspark.sql.functions as fn
from pyspark.sql import Window

df = pd.DataFrame({'id': [0,0,0,0,0,1,1,1,1,1],
                   'time': [1,2,3,4,5,1,2,3,4,5],
                   'average':[0,1,2,3,4,5,6,7,8,9] })
df = sqlContext.createDataFrame(df)

temp = Window.partitionBy("id").orderBy("time").rowsBetween(-1, 1)
df.withColumn("movingAvg",fn.avg("average").over(temp)).show()
  • 0
    Спасибо за мою помощь! Я могу успешно запустить ваш код, но не могу сделать это в своем коде. Возможно, потому что я использую: spark = SparkSession.builder.appName ("") .getOrCreate () file = "D: \ project \ HistoryData.csv" lines = pd.read_csv (файл) cc = lines.values.tolist () spark_df = spark.createDataFrame (cc, ['time', 'average', 'max', 'min']) это для создания моего фрейма данных
  • 0
    Это говорит мне pyspark.sql.utils.AnalysisException.
Показать ещё 4 комментария
0
 from pyspark.sql import SparkSession
 from pyspark.sql import Window
 from pyspark.sql.functions import max,min,avg
 spark = SparkSession.builder.appName("Data Frame Example") \
.config("spark.some.config.option", "some-value") \
.getOrCreate()

 l=[("Alice", "2016-05-01", 50.00),
                                ("Alice", "2016-05-03", 45.00),
                                ("Alice", "2016-05-04", 55.00),
                                ("Bob", "2016-05-01", 25.00),
                                ("Bob", "2016-05-04", 29.00),
                                ("Bob", "2016-05-06", 27.00)]

customers = spark.sparkContext.parallelize(l).toDF(["name", "date", "amountSpent"])

temp = Window.partitionBy("name").orderBy("date")

customers.withColumn( "movingAvg",avg("amountSpent").over(temp)).show()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню