为什么读取json格式文件会导致所有记录都进入pyspark中的_corrupt_record

发布于 2025-01-16 14:31:46 字数 1545 浏览 0 评论 0原文

我正在从 api 调用读取数据,数据采用 json 形式,如下所示:

{'success': True, 'errors': \[\], 'requestId': '151a2#fg', 'warnings': \[\], 'result': \[{'id': 10322433, 'name': 'sdfdgd', 'desc': '', 'createdAt': '2016-09-20T13:48:58Z+0000', 'updatedAt': '2020-07-16T13:08:03Z+0000', 'url': 'https://eda', 'subject': {'type': 'Text', 'value': 'Register now'}, 'fromName': {'type': 'Text', 'value': 'ramjdn fg'}, 'fromEmail': {'type': 'Text', 'value': '[email protected]'}, 'replyEmail': {'type': 'Text', 'value': '[email protected]'}, 'folder': {'type': 'Folder', 'value': 478, 'folderName': 'sjha'}, 'operational': False, 'textOnly': False, 'publishToMSI': False, 'webView': False, 'status': 'approved', 'template': 1031, 'workspace': 'Default', 'isOpenTrackingDisabled': False, 'version': 2, 'autoCopyToText': True, 'preHeader': None}\]}

现在,当我使用以下代码从该数据创建数据帧时:

df = spark.read.json(sc.parallelize(\[data\]))

我只得到一列,即 _corrupt_record,下面是数据帧 o /p 我明白了。我尝试过使用 multine is true 但仍然没有得到所需的输出。

+--------------------+
|     \_corrupt_record|
\+--------------------+
|{'id': 12526, 'na...|
\+--------------------+

预期的 o/p 是将 json 分解为不同列后的数据帧,例如 id 作为一列,name 作为另一列等等。

我已经尝试了很多方法但无法解决这个问题。

I am reading data from an api call and the data is in the form of json like below:

{'success': True, 'errors': \[\], 'requestId': '151a2#fg', 'warnings': \[\], 'result': \[{'id': 10322433, 'name': 'sdfdgd', 'desc': '', 'createdAt': '2016-09-20T13:48:58Z+0000', 'updatedAt': '2020-07-16T13:08:03Z+0000', 'url': 'https://eda', 'subject': {'type': 'Text', 'value': 'Register now'}, 'fromName': {'type': 'Text', 'value': 'ramjdn fg'}, 'fromEmail': {'type': 'Text', 'value': '[email protected]'}, 'replyEmail': {'type': 'Text', 'value': '[email protected]'}, 'folder': {'type': 'Folder', 'value': 478, 'folderName': 'sjha'}, 'operational': False, 'textOnly': False, 'publishToMSI': False, 'webView': False, 'status': 'approved', 'template': 1031, 'workspace': 'Default', 'isOpenTrackingDisabled': False, 'version': 2, 'autoCopyToText': True, 'preHeader': None}\]}

Now when I am creating a dataframe out of this data using below code:

df = spark.read.json(sc.parallelize(\[data\]))

I am getting only one column which is _corrupt_record, below is the dataframe o/p I am getting. I have tried using multine is true but am still not getting the desired output.

+--------------------+
|     \_corrupt_record|
\+--------------------+
|{'id': 12526, 'na...|
\+--------------------+

Expected o/p is the dataframe after exploding json with different columns, like id as one column, name as other column and so on.

I have tried lot of things but not able to fix this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

兔小萌 2025-01-23 14:31:46

我做了一些改变并且奏效了。

  1. 我需要定义自定义架构

  2. 然后使用这段代码

    data = sc.parallelize([items])
    df = Spark.createDataFrame(数据,模式=模式)
    

并且它起作用了。

如果有任何优化的解决方案,请随时分享。

I have made certain changes and it worked.

  1. I need to define the custom schema

  2. Then used this bit of code

    data = sc.parallelize([items])
    df = spark.createDataFrame(data,schema=schema)
    

And It worked.

If there are any optimized solution to this please feel free to share.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文