给定输入列时,Pyspark“无法解析'`keyName_1`':[keyName_1,keyName_2,keyName_3] \ n”在读取Json文件时

时间:2018-03-29 09:23:38

标签: python json pyspark

我正在使用pyspark读取json文件,如下所示:

raw = sc.textFile(path)
dataset_df = sqlContext.read.json(raw)

因此,要仅从json文件中选择特定键(如果存在键),我使用:

dataset_df.select('countryName', 'city', 'age')

但是,我从上面的行中得到以下错误,注意到``输入列周围的字符给出错误,我没有指定那些我列出我想从json文件中选择的键时):

  

“无法解析'`countryName`'给定输入列:[countryName','city',”age“] \ n”

当我从csv中读取密钥列表中删除countryName时出现类似错误。我已经测试了json文件中的其他键,对于一些,上面的代码运行没有问题但是对于特定的列我得到上面显示的错误。

有谁知道这背后的原因是什么?

提前致谢。

1 个答案:

答案 0 :(得分:1)

最后,我找到了解决方案:

所以问题是由于我读取的一些json文件可能没有我正在寻找的所有密钥。在这种情况下,文件没有特定的密钥,我得到了我报告的错误。为了解决这个问题,我只需检查是否在这个特定的json文件中找到了一个密钥。如果找不到,我将其替换为None(这可能是我用来表示缺失值的任何值)。

以下是生成的代码:

raw = sc.textFile(path)
dataset_df = sqlContext.read.json(raw)

all_columns_being_used = ["countryName", 'city', "age"]

for column_name in all_columns_being_used:
                if not column_name in dataset_df.columns:
                    pre_feature_set = dataset_df.withColumn(column_name, lit(None))