json - 多行 JSON 未解析
问题描述
控制台
scala> var njson = spark.read.option("multiLine", "true").json("C:/Users/Onkar/Desktop/new.json") njson: org.apache.spark.sql. DataFrame = [_corrupt_record: 字符串]
我的 JSON:
[{
"Name": "Onkar",
"Age": 24,
"Place": "Baramati"
}]
解决方案
在 spark 版本2.2.0
中,支持解析 json 对象的数组。json对象的spark解析数组的低版本不支持或解析不正确。
请检查以下代码。
scala> spark.version
res47: String = 2.2.0
scala> "cat /tmp/app.json".!
[{
"Name": "Onkar",
"Age": 24,
"Place": "Baramati",
"Number": 7709526425
}]
res48: Int = 0
scala> val jdf = spark.read.option("multiLine","true").json("/tmp/app.json")
jdf: org.apache.spark.sql.DataFrame = [Age: bigint, Name: string ... 2 more fields]
scala> jdf.printSchema
root
|-- Age: long (nullable = true)
|-- Name: string (nullable = true)
|-- Number: long (nullable = true)
|-- Place: string (nullable = true)
scala> jdf.show(false)
+---+-----+----------+--------+
|Age|Name |Number |Place |
+---+-----+----------+--------+
|24 |Onkar|7709526425|Baramati|
+---+-----+----------+--------+
spark 版本2.1.1
有一些问题,因为它没有解析 json 对象的数组&这个问题已在较新的版本中得到修复。
scala> spark.version
res2: String = 2.1.1
scala> val jdf = spark.read.option("multiLine","true").json("/tmp/app.json")
jdf: org.apache.spark.sql.DataFrame = [_corrupt_record: string]
scala> jdf.printSchema
root
|-- _corrupt_record: string (nullable = true)
推荐阅读
- android - 如何在我的应用程序中集成 4 位密码
- laravel - 列值返回 null
- android-studio - 缺少 JNI 本机方法但没有构建错误
- javascript - 找出用于执行操作的请求
- php - 我的 SQL 查询/PDO 准备好的语句不起作用
- python - 如何解决添加到 CSV 文件的问题?
- ubuntu - 詹金斯失业后发送的电子邮件?
- java - 嗯,嗨,我是初学者,不知道如何加快我的代码速度。我的作业是为 CCC '20 S2 编写一个程序 - 逃生室的速度超过两秒
- cyclomatic-complexity - Scratch 程序的圈复杂度
- python - 在 Python 中将记录插入到 postgreSQL 数据库中