SparSql 中DataFrame出现_corrupt_record问题解决(DataFrame多行读取JSON数据问题解决)
背景
在使用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数据问题解决)相关推荐
- dataframe交换某两行(多行)的数据
文章目录 前言 例1 例2 总结 前言 有时候想更换dataframe数据中某两行(多行)的位置,这个时候可以通过如下方法实现 例1 import pandas as pd df = pd.DataF ...
- 在PHP中如何要json中的数据,如何在不知道键值的情况下在php中读取JSON数据
我需要在php中读取firebase JSON URL然后显示它. 我的firebase得到了以下.json数据: {"dDsdE4AlB7P5YYd4fWbYTQKCLPh1": ...
- python读取json数据的key值_jquery中怎么获取json的key值?
展开全部 获取方法如下:用jquery回调函数完成. $.each(json, function(i) { console.log(i); //获取键值 console.log(json[i]) ...
- 从 vue-cli 源码中,我发现了27行读取 json 文件有趣的 npm 包
1. 前言 大家好,我是若川.最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.已进行四个月了,很多小伙伴表示收获颇丰. 想学源码 ...
- SpringMvc JavaMailSenderImpl 邮件发送时到时前端无法接受Json数据问题解决
//发送邮件通知密码重置成功SimpleMailMessage mailMessage = new SimpleMailMessage();mailMessage.setTo(email);mailM ...
- MaxCompute中如何使用OSS外部表读取JSON数据?
一.打开OSS,上传json文件 json文件内容展示: {"id":5644228109524316032,"sourceType":1} {"id ...
- android xutils json请求,Android中的xutils框架在访问服务器时如何携带json数据
xutils框架的httputils在访问服务器时如何像HttpURLConnection一样携带json数据 HttpURLConnection携带数据的案例,使用put请求: URL url; H ...
- Python笔记-Json转DataFrame(基金主题Json数据)
关于基金主题数据如何获取,在后面的博文中会介绍,这里只介绍下,Json数据转DataFrame方便进行数据分析. 从互联网中得到的json数据如下: {"Data":{" ...
- 机器学习之Pandas:Pandas介绍、基本数据操作、DataFrame运算、Pandas画图、文件读取与处、缺失值处理、数据离散化、合并、交叉表和透视表、分组与聚合、案例(超长篇,建议收藏慢慢看)
文章目录 Pandas 学习目标 1Pandas介绍 学习目标 1 Pandas介绍 2 为什么使用Pandas 3 案例: 问题:如何让数据更有意义的显示?处理刚才的股票数据 给股票涨跌幅数据增加行 ...
最新文章
- Jmeter接口测试进阶
- 计算机网络安全反思,网络安全教育教学反思范文
- 【架构】典型的 K8s 架构图-核心概念(简化)
- poj 1195(二维树状数组)
- python单例模式数据库连接池_Python实现单例模式的四种方式
- spark1.3.1使用基础教程
- c语言main函数的参数argc,argv说明
- docker查看容器并运行
- Vue.js 极简小例:读值、样式调用、if判断、a 标签、点击事件、管道
- for循环里面有异步操作_JS 线程与异步的那些事
- 使用Python自由切分pdf文件提取任意页面
- 水性丙烯酸酯共聚物流变改性剂行业调研报告 - 市场现状分析与发展前景预测
- mysql57数据库命令_centos7.2下安装mysql5.7数据库的命令详解
- 《Java核心技术卷一》学习笔记(一)
- 【python】BMR基础代谢率计算器的设计
- Android Binder机制
- 2015/7/28(总结昨天抄底操作失败-割肉自保)
- 抱薪者说 | 君莫:穿越山海,终成“C链小雷锋”
- 聊城大学计算机学院的辅导员,2019年度聊城大学优秀辅导员名单、优秀班主任名单公示...
- 入侵防御系统_入侵防御系统简介