我正在尝试将 json 文件读入 Spark 数据帧,但我将整个文件作为一行和一列获取,我试图将其拆分为多列:
df = spark.read.json(sc.wholeTextFiles("HW2-DataSets/docs/output-0.json").values())
df.show()
这是我运行这行代码得到的输出:
+--------------------+
| Images|
+--------------------+
|[[ricky4, 1634180...|
+--------------------+
这是已创建的数据帧的架构:
root
|-- Images: struct (nullable = true)
| |-- Z4ah9SemQjX2cKN187pX: struct (nullable = true)
| | |-- artist: string (nullable = true)
| | |-- created_at: long (nullable = true)
| | |-- description: string (nullable = true)
| | |-- download_url: string (nullable = true)
| | |-- file_name: string (nullable = true)
| | |-- id: string (nullable = true)
| | |-- key_words: array (nullable = true)
| | | |-- element: string (containsNull = true)
| | |-- source: string (nullable = true)
| | |-- tagged: boolean (nullable = true)
| | |-- title: string (nullable = true)
| |-- Z552dVXF5vp80bAajYrn: struct (nullable = true)
| | |-- artist: string (nullable = true)
| | |-- created_at: long (nullable = true)
| | |-- description: string (nullable = true)
| | |-- download_url: string (nullable = true)
| | |-- file_name: string (nullable = true)
| | |-- id: string (nullable = true)
| | |-- key_words: array (nullable = true)
| | | |-- element: string (containsNull = true)
| | |-- source: string (nullable = true)
| | |-- tagged: boolean (nullable = true)
| | |-- title: string (nullable = true)
| |-- Z598cIDb79GPrC6VXbTb: struct (nullable = true)
....
我的目标是将图像中的每个对象放在一行和分隔的列中,这意味着例如“Z4ah9SemQjX2cKN187pX”,其值为:艺术家,created_at…在第一行,“Z552dVXF5vp80bAajYrn”在第二行等。
我很陌生,可以激发每条评论都会有所帮助,谢谢。
使现代化
{
"Images": {
"Z4ah9SemQjX2cKN187pX": {
"artist": "ricky4",
"file_name": "mermaid_by_ricky4_d59jfzw-fullview.jpg",
"created_at": 1634180503921,
"description": "Hi folks! This is my latest work! So glad to be a part of the calendar project from my friend Dee More details here! :thumb322291755: artistsforacure.deviantart.com… Inspired by: CLOCK DVA - Return to blue www.youtube.com/watch?v=rjfxI2…All resources: my own! Other purple artworks",
"key_words": [
"dark",
"digital",
"evil",
"fantasy",
"fishes",
"lady",
"light",
"magic",
"mermaid",
"ocean",
"sea",
"utopia",
"reflections"
],
"source": "https://www.deviantart.com/",
"title": "Mermaid",
"tagged": false,
"download_url": "",
"id": "Z4ah9SemQjX2cKN187pX"
},
"Z552dVXF5vp80bAajYrn": {
首先,您可以使用多行选项读取json文件,并将其作为数据帧变量中的单个列获取,然后可以使用columnname在数据帧变量上使用select语句。*它将为您提供一个包含一行的数据帧,其中每一行都有一个列,列的值与json中的值相同。
代码如下:
#read the json file
df = spark.read.option("multiline","true").json("HW2-DataSets/docs/output-0.json")
#used the select statement to see the output you want
from pyspark.sql.functions import *
df1 = df.select(col("Images.*"))
#do df1.show() to see the output
# I am using Databricks so I do display(df1)
#Convert Columns to rows (Updated)
from itertools import chain
m = create_map(list(chain(*(
(lit(c), col(c)) for c in df1.columns))))
df2 = df1.withColumn('map', m)\
.select(explode('map')).drop('map')
您可以看到如下输出:
问题内容: 我有这个JSON文件 这是通过Python json.dump方法获得的。现在,我想使用pyspark将此文件读入Spark中的DataFrame中。根据文档,我正在这样做 sc = SparkContext() sqlc = SQLContext(sc) df = sqlc.read.json(’my_file.json’) 打印df.show() print语句虽然说明了这一点:
我想用GSON库用java读这个JSON文件。我刚开始使用gson Libray。有人请纠正我的代码我的JSON文件如下所示: 这是我为读取这个文件而编写的java代码: 但我得到以下异常:
问题内容: 我想使用JSON简单库使用Java 读取此文件。 我的文件如下所示: 这是我为读取此文件而编写的Java代码: 但是我得到以下异常: 线程“主”中的异常java.lang.ClassCastException:org.json.simple.JSONArray无法转换为上的。 有人可以告诉我我做错了吗?整个文件是一个数组,并且文件的整个数组中包含对象和另一个数组(汽车)。但是我不知道如
我想使用JSON简单库用java读取这个<code>JSON<code>文件。 我的文件如下所示: 这是我为读取此文件而编写的java代码: 但我得到了以下例外: 线程“main”中出现异常Java . lang . classcastexception:org . JSON . simple . JSON array无法转换为javaapplication1处的org.json.simple.J
问题内容: 你如何将文件内容读入Java? 以下是文件内容: 只需将每个单词读入。 问题答案: 此Java代码读取每个单词并将其放入ArrayList中: 如果要逐行而不是逐字阅读,请使用和。
问题内容: 我正在尝试将csv文件“ read_ex.csv”读入数组。我在web / stackoverflow上进行了无休止的搜索,以找到一种将文件读入数组的方法。我能做的最好的事情是以流方式读取它,但是由于文件大小可变,我无法将其存储在数组中。我相信ArrayList是处理可变大小数组的方法,但是我不知道如何使用它。本质上,我希望能够在while循环结束后访问String数组“ values