Apache Spark中的Printschema()

时间:2018-04-30 09:28:36

标签: apache-spark spark-dataframe apache-spark-dataset

Dataset<Tweet> ds = sc.read().json("/path").as(Encoders.bean(Tweet.class));



Tweet class :-
long id
string user;
string text;


ds.printSchema();

输出: -

root
  |-- id: string (nullable = true)
  |-- text: string (nullable = true)  
  |-- user: string (nullable = true)

json文件包含字符串类型

的所有参数

我的问题是我正在输入并将其编码为Tweet.class。架构中为id指定的数据类型为Long,但是当打印架构时,它会转换为String

它是否为printcheme a / c提供了如何读取文件或根据我们的编码(这里是Tweet.class)?

1 个答案:

答案 0 :(得分:3)

我不知道您的代码无效的确切原因,但如果您想更改字段类型,则可以编写customSchema。

val schema =  StructType(List
                        (
                          StructField("id", LongType, nullable = true),
                          StructField("text", StringType, nullable = true),
                          StructField("user", StringType, nullable = true)
                        )))

您可以按如下方式将架构应用于数据框:

Dataset<Tweet> ds = sc.read().schema(schema).json("/path")

ds.printSchema()