如何解决这个错误:" SQLContext对象没有no属性' jsonFile'

时间:2017-01-13 19:06:13

标签: python json apache-spark pyspark

我现在正在学习Spark。当我尝试加载json文件时,如下所示:

people=sqlContext.jsonFile("C:\wdchentxt\CustomerData.json")

我收到以下错误:

AttributeError: 'SQLContext' object has no attribute 'jsonFile'

我在Windows 7 PC上运行它,使用spark-2.1.0-bin-hadoop2.7和Python 2.7.13(2016年12月17日)。

感谢您提出的任何建议。

3 个答案:

答案 0 :(得分:1)

您可能忘记导入implicits。这就是我的解决方案在Scala中的样子:

def loadJson(filename: String, sqlContext: SqlContext): Dataset[Row] = {
  import sqlContext._
  import sqlContext.implicits._
  val df = sqlContext.read.json(filename)
  df
}

答案 1 :(得分:0)

如前所述,.jsonFile (...)已被弃用 1 ,请改用:

people = sqlContext.read.json("C:\wdchentxt\CustomerData.json").rdd

来源

[1]:https://docs.databricks.com/spark/latest/data-sources/read-json.html

答案 2 :(得分:0)

首先,Spark的最新版本(例如您所使用的版本)涉及.read.json(..)而不是不推荐使用的.readJson(..)

第二,您需要确保正确设置SqlContext,如此处所述:pyspark : NameError: name 'spark' is not defined。就我而言,它的设置是这样的:

from pyspark.sql import SQLContext, Row
sqlContext = SQLContext(sc)
myObjects = sqlContext.read.json('file:///home/cloudera/Downloads/json_files/firehose-1-2018-08-24-17-27-47-7066324b')

请注意,他们有特定于版本的快速入门教程,可以帮助正确完成一些基本操作,如此处所述:name spark is not defined

所以,我的意思是要经常检查以确保无论使用哪种库或语言(并且这通常适用于所有技术)都遵循与您所运行的版本相匹配的文档,因为它很常见如果版本不匹配,则破坏更改会引起很多混乱。如果您要使用的技术在所运行的版本中没有得到很好的记录,则需要评估是否应该升级到最新版本或与维护项目的人员一起创建支持记录,以便您可以帮助他们更好地支持他们的用户。

您可以在此处找到关于Spark的所有特定于版本的更改的指南:https://spark.apache.org/docs/latest/sql-programming-guide.html#upgrading-from-spark-sql-16-to-20

您还可以在此处找到有关Spark和PySpark的特定于版本的文档(例如,针对1.6.1版):https://spark.apache.org/docs/1.6.1/sql-programming-guide.html