我使用的是Azure Databricks(10.4 LTS(包括Apache Spark 3.2.1,Scala 2.12))Standard_L8s内核。
当执行下面的代码时,得到SparkContext should only be created and accessed on the driver
错误。如果我只使用import pandas,它运行得很好,但需要3个多小时。对我来说,我有数十亿的记录要处理。我必须调整这个UDF请帮助在这方面。
import pyspark.pandas as pd
def getnearest_five_min_slot(valu):
dataframe = pd.DataFrame([300,600,900,1200,1500,1800,2100,2400,2700,3000,3300,3600], columns = ['value'])
rslt_df = dataframe.loc[dataframe['value'] >= value]
rslt_df=rslt_df.sort_values(by=['value'], ascending=[True]).head(1)
output=int(rslt_df.iat[0,0])
print('\nResult dataframe :\n', output)
return output
getnearestFiveMinSlot = udf(lambda m: getnearest_five_min_slot(m))
slotValue = [100,500,1100,400,601]
df = spark.createDataFrame(slotValue, IntegerType())
df=df.withColumn("NewValue",getnearestFiveMinSlot("value"))
display(df)
字符串
2条答案
按热度按时间nwwlzxa71#
您需要实际创建
SparkSession
对象并为其提供一个App名称,以便开始在Databricks中使用Spark。这是强制性的先决条件。SparkSession
是PySpark的入口点,**创建SparkSession
示例将是您使用RDD、DataFrame和Dataset编写程序的第一条语句。**SparkSession将使用SparkSession.builder
构建器模式创建。在代码的开头使用下面的语句来创建SparkSession。
字符串
关于spark session的更多信息和使用方法,请参考NNKhere的第三方文章。
slsn1g292#
我已经将SparkSession添加到我的脚本中,但错误仍然存在。在我的例子中,奇怪的是,当我在Databricks的Noteoboks上运行代码时,它运行得很好,但当我试图在.py脚本中运行它时,它会引发此错误。