背景

在使用sparksql创建DataFrame的时候,读取的数据包含_corrupt_record,在操作过程中产生错乱的问题,代码如下

当前spark版本:2.1.1

当前使用scala兼容版本:2.11

   <!-- 版本 --><properties><encoding>UTF-8</encoding><scala.version>2.11.8</scala.version><scala.compat.version>2.11</scala.compat.version><spark.version>2.1.1</spark.version></properties><!-- 依赖 --> <dependency><groupId>org.apache.spark</groupId><artifactId>spark-sql_${scala.compat.version}</artifactId><version>${spark.version}</version></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_${scala.compat.version}</artifactId><version>${spark.version}</version><exclusions><exclusion><artifactId>slf4j-log4j12</artifactId><groupId>org.slf4j</groupId></exclusion></exclusions></dependency>
package com.example.scala.rddimport org.apache.spark.sql.SparkSessionobject DataFrameDemo {def testSql(session: SparkSession) = {//可以使用绝对路径,也可以使用相对路径val json = session.read.json("scala-demo\\src\\main\\scala\\com\\example\\scala\\rdd\\emperor.json")json.show()json.printSchema()json.createGlobalTempView("emperor")val sql1 = session.sql("select name,age from global_temp.emperor")// 直接进行sql运算val sql2 = session.sql("select name,age+1 as age from global_temp.emperor")println("指定列字段查询结构: ")sql1.show()println("字段运算查询结果: ")sql2.show()println("分组查询结果")val sql3 = session.sql("select age ,count(1) from global_temp.emperor group by age")sql3.show()}def main(args: Array[String]): Unit = {val b = SparkSession.builder().master("local")val session: SparkSession = b.getOrCreate()session.sparkContext.getConf.setMaster("local")testSql(session)session.stop()}
}

原数据

[{"name": "朱元璋", "age": 38  },{"name": "朱允文", "age": 25  },{"name": "朱棣",   "age": 38  },{"name": "朱高炽(chi)", "age": 25 }
]

结果输出

解决方式

解决方式一

1.DataFrame创建的时候,原数据是以行为读取单位的

2.session.read.json("path.json") 源文件每一行为一个jsonn结构(可以不用逗号隔开)

原数据更改如下

{"name": "朱元璋", "age": 38  }
{"name": "朱允文", "age": 25  }
{"name": "朱棣",   "age": 38  }
{"name": "朱高炽(chi)", "age": 25 }

解决方式二

升级spark版本,该问题在版本2.2.0开始引入配置参数

版本:

<spark.version>2.2.0</spark.version>

配置参数:session.read.option("multiLine", true).json("path.json")

val json = session.read.option("multiLine", true).json("scala-demo\\src\\main\\scala\\com\\example\\scala\\rdd\\emperor.json")

重新执行结果

+---+--------+
|age|    name|
+---+--------+
| 38|     朱元璋|
| 25|     朱允文|
| 38|      朱棣|
| 25|朱高炽(chi)|
+---+--------+root|-- age: long (nullable = true)|-- name: string (nullable = true)指定列字段查询结构:
+--------+---+
|    name|age|
+--------+---+
|     朱元璋| 38|
|     朱允文| 25|
|      朱棣| 38|
|朱高炽(chi)| 25|
+--------+---+字段运算查询结果:
+--------+---+
|    name|age|
+--------+---+
|     朱元璋| 39|
|     朱允文| 26|
|      朱棣| 39|
|朱高炽(chi)| 26|
+--------+---+分组查询结果
+---+--------+
|age|count(1)|
+---+--------+
| 25|       2|
| 38|       2|
+---+--------+

SparSql 中DataFrame出现_corrupt_record问题解决(DataFrame多行读取JSON数据问题解决)相关推荐

  1. dataframe交换某两行(多行)的数据

    文章目录 前言 例1 例2 总结 前言 有时候想更换dataframe数据中某两行(多行)的位置,这个时候可以通过如下方法实现 例1 import pandas as pd df = pd.DataF ...

  2. 在PHP中如何要json中的数据,如何在不知道键值的情况下在php中读取JSON数据

    我需要在php中读取firebase JSON URL然后显示它. 我的firebase得到了以下.json数据: {"dDsdE4AlB7P5YYd4fWbYTQKCLPh1": ...

  3. python读取json数据的key值_jquery中怎么获取json的key值?

    展开全部 获取方法如下:用jquery回调函数完成. $.each(json, function(i) {    console.log(i); //获取键值 console.log(json[i]) ...

  4. 从 vue-cli 源码中,我发现了27行读取 json 文件有趣的 npm 包

    1. 前言 大家好,我是若川.最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.已进行四个月了,很多小伙伴表示收获颇丰. 想学源码 ...

  5. SpringMvc JavaMailSenderImpl 邮件发送时到时前端无法接受Json数据问题解决

    //发送邮件通知密码重置成功SimpleMailMessage mailMessage = new SimpleMailMessage();mailMessage.setTo(email);mailM ...

  6. MaxCompute中如何使用OSS外部表读取JSON数据?

    一.打开OSS,上传json文件 json文件内容展示: {"id":5644228109524316032,"sourceType":1} {"id ...

  7. android xutils json请求,Android中的xutils框架在访问服务器时如何携带json数据

    xutils框架的httputils在访问服务器时如何像HttpURLConnection一样携带json数据 HttpURLConnection携带数据的案例,使用put请求: URL url; H ...

  8. Python笔记-Json转DataFrame(基金主题Json数据)

    关于基金主题数据如何获取,在后面的博文中会介绍,这里只介绍下,Json数据转DataFrame方便进行数据分析. 从互联网中得到的json数据如下: {"Data":{" ...

  9. 机器学习之Pandas:Pandas介绍、基本数据操作、DataFrame运算、Pandas画图、文件读取与处、缺失值处理、数据离散化、合并、交叉表和透视表、分组与聚合、案例(超长篇,建议收藏慢慢看)

    文章目录 Pandas 学习目标 1Pandas介绍 学习目标 1 Pandas介绍 2 为什么使用Pandas 3 案例: 问题:如何让数据更有意义的显示?处理刚才的股票数据 给股票涨跌幅数据增加行 ...

最新文章

  1. Jmeter接口测试进阶
  2. 计算机网络安全反思,网络安全教育教学反思范文
  3. 【架构】典型的 K8s 架构图-核心概念(简化)
  4. poj 1195(二维树状数组)
  5. python单例模式数据库连接池_Python实现单例模式的四种方式
  6. spark1.3.1使用基础教程
  7. c语言main函数的参数argc,argv说明
  8. docker查看容器并运行
  9. Vue.js 极简小例:读值、样式调用、if判断、a 标签、点击事件、管道
  10. for循环里面有异步操作_JS 线程与异步的那些事
  11. 使用Python自由切分pdf文件提取任意页面
  12. 水性丙烯酸酯共聚物流变改性剂行业调研报告 - 市场现状分析与发展前景预测
  13. mysql57数据库命令_centos7.2下安装mysql5.7数据库的命令详解
  14. 《Java核心技术卷一》学习笔记(一)
  15. 【python】BMR基础代谢率计算器的设计
  16. Android Binder机制
  17. 2015/7/28(总结昨天抄底操作失败-割肉自保)
  18. 抱薪者说 | 君莫:穿越山海,终成“C链小雷锋”
  19. 聊城大学计算机学院的辅导员,2019年度聊城大学优秀辅导员名单、优秀班主任名单公示...
  20. 入侵防御系统_入侵防御系统简介

热门文章

  1. vscode使用‘koroFileHeader‘插件生成注释
  2. 大型网站后台稳定性技术策略
  3. 【杂记随笔】专业名词
  4. Javascript实现倒计时(计时器)
  5. 微信小程序移植qq小程序
  6. 用python创建文件夹
  7. python爬虫批量爬取乐愚社区精美壁纸
  8. svn使用教程_苹果svn使用教程
  9. 查看电脑IP、MAC(物理地址)
  10. CSS3圆角-透明操作-动画效果