如何保持与 JSON 相同的 DataFrame 中的键值顺序? [英] How to maintain order of key-value in DataFrame same as JSON?

查看:29
本文介绍了如何保持与 JSON 相同的 DataFrame 中的键值顺序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

示例 JSON 数据:

Sample JSON data:

{"name": "dev","salary": 100,"occupation": "engg","address": "noida"}
{"name": "karthik","salary": 200,"occupation": "engg","address": "blore"}

Spark Java 代码:

Spark Java code:

DataFrame df = sqlContext.read().json(jsonPath);
df.printSchema();
df.show(false);

输出:

root
 |-- address: string (nullable = true)
 |-- name: string (nullable = true)
 |-- occupation: string (nullable = true)
 |-- salary: long (nullable = true)


+-------+-------+----------+------+
|address|name   |occupation|salary|
+-------+-------+----------+------+
|noida  |dev    |engg      |10000 |
|blore  |karthik|engg      |20000 |
+-------+-------+----------+------+

列按字母顺序排列.有没有办法维持自然秩序?

推荐答案

您可以在读取 json 的同时提供 schema 并保持顺序.

You can provide schema while reading the json and it will maintain the order.

StructType schema = DataTypes.createStructType(new StructField[] { 
    DataTypes.createStructField("name", DataTypes.StringType, true),
    DataTypes.createStructField("salary", DataTypes.IntegerType, true),
    DataTypes.createStructField("occupation", DataTypes.StringType, true),
    DataTypes.createStructField("address", DataTypes.StringType, true)});

DataFrame df = sqlContext.read().schema(schema).json(jsonPath);
df.printSchema();
df.show(false);

这篇关于如何保持与 JSON 相同的 DataFrame 中的键值顺序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆