如何将JSON对象列表转换为单个PySpark数据框?

我是PySpark的新手,我从API中获取了一系列JSON,每个JSON对象具有相同的模式(键值对)。像这样

[ {'count': 308,  'next': 'some_url',  'previous': None,  'results': [{'assigned_to': 43,    'category': 'Unused',    'comments': None,    'completed_ts': None,    'created': '2019-05-27T05:14:22.306843Z',    'description': 'Pollution',    'display_name': {'admin': False,     'business_name': 'Test Business',     'contact_number': 'some_number',     'dob': None,     'email': 'some_mail',     'emp_id': None,     'first_name': 'Alisha'}}]},  {'count': 309,  'next': 'some_url',  'previous': None,  'results': [{'assigned_to': 44,    'category': 'Unused',    'comments': None,    'completed_ts': None,    'created': '2019-05-27T05:14:22.306843Z',    'description': 'Pollution',    'display_name': {'admin': False,     'business_name': 'Test Business',     'contact_number': 'some_number',     'dob': None,     'email': 'some_mail',     'emp_id': None,     'first_name': 'Ali'}}]},......}]

如果这些是单独的JSON文件,我会使用以下方式创建数据框

df =spark.read.json('myfile.json')然后将所有数据框合并成一个。我在尝试直接从列表转换为数据框时遇到了问题。我使用了这个

from pyspark.sql import SparkSessionspark= SparkSession.builder.appName("Basics").getOrCreate()sc= spark.sparkContextdf = pyspark.sql.SQLContext(sc.parallelize(data_list))`

这会给我AttributeError: 'RDD' object has no attribute '_jsc'


回答:

我没有找到直接解决您问题的答案。但这个解决方案有效,

import jsonimport astdf = sc.wholeTextFiles(path).map(lambda x:ast.literal_eval(x[1]))\                            .map(lambda x: json.dumps(x))df = spark.read.json(df)

这会给您如下输出,

+-----+--------+--------+--------------------+|count|    next|previous|             results|+-----+--------+--------+--------------------+|  308|some_url|    null|[[43,Unused,null,...||  309|some_url|    null|[[44,Unused,null,...|+-----+--------+--------+--------------------+

编辑:如果它在一个变量中,您只需要做的是,

import jsondf = sc.parallelize(data).map(lambda x: json.dumps(x))df = spark.read.json(df)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注