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

标签 java json apache-spark apache-spark-sql

示例 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);

输出:

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,它将保持顺序。

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);

关于java - 如何保持 DataFrame 中的键值顺序与 JSON 相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43587169/

相关文章:

Java Servlet 检查文件是否存在或创建它

Java - 添加行有更有效的方法吗?

javascript - 如何从 Nodejs 后端的 JSON 填充 React 数组

javascript - 将嵌套的 json 转换为 html

java - Intellij idea插件开发: plugin not enabled on right click on project

javascript - 如何在json中给出本地文件的url路径

scala - 元组到 Spark Scala中的数据帧

scala - Spark map 创建需要很长时间

java - 如何使用Dataset API编写字数统计?

java - java中的正则表达式尝试匹配特定格式的字符串(格式由 | sysbol 组成)