如何保持DataFrame中键值的顺序与JSON相同?

2024-03-17

JSON 数据示例:

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

Spark Java代码:

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

Output:

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 |
+-------+-------+----------+------+

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


您可以提供schema在阅读时json并且它将维持秩序。

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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何保持DataFrame中键值的顺序与JSON相同? 的相关文章

随机推荐