首页 > 解决方案 > java.lang.RuntimeException:java.lang.Integer 不是 bigint 架构的有效外部类型:java.io.IOException

问题描述

我有一个包含以下数据的 RDD,我正在尝试将其转换为 spark Dataframe。

JavaRDD<Row> myRdd = df.javaRDD()

// do some processing on RDD
// myRdd after processing -> [("user1", 200), ("user2", 200L)]
// mySchema -> DataTypes.createStructType(new StructField[] {
//         DataTypes.createStructField("Name", DataTypes.StringType, true),
//         DataTypes.createStructField("Salary", DataTypes.LongType, true)});

myDf = sparkSession.createDataFrame(myRdd, mySchema)

我收到以下错误

java.lang.RuntimeException: java.lang.Integer is not a valid external type for schema of bigint: java.io.IOException

由于数据可以在不同的行中变化,我想使用最兼容的模式来适应所有的行。因此,我long为该列使用数据类型salary。如何让 spark 自动将其类型转换为更高的数据类型

标签: javaapache-sparkapache-spark-sql

解决方案


推荐阅读