typeerror:sql()缺少1个必需的位置参数:pyspark中的“sqlquery”

goucqfw6  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(527)

我试图估计PySpark3.0.1中数据块上数学分数的比例。有些情况下,我的总分是0。所以我写了下面的代码

df_data.registerTempTable('myTable')
 df_oversees2=SQLContext.sql("select A.*,case when total_marks=0 then 0 else (maths_marks/total_marks) end as prop_maths from myTable A ")

但我收到了错误信息

TypeError: sql() missing 1 required positional argument: 'sqlQuery'

你能帮我解决这个问题吗?我还用下面的代码验证了我的总分和数学分在我的表中

df1 = sqlContext.sql("select maths_marks,total_marks from myTable")
df1.show()

我看到两个字段的输出

bjp0bcyl

bjp0bcyl1#

SQLContext 不同于 sqlContext -后者是一个 SQLContext 附属于 SparkContext 前者是一个不附属于任何 SparkContext . 因此,您需要:

sqlContext = SQLContext(sc)
df_oversees2 = sqlContext.sql("your query")

在任何情况下,都不赞成使用它,最好的方法是调用

spark.sql("your query")

哪里 spark 是一个 sparkSession 对象。

相关问题