我想创造一个 DataFrame
使用 RDD
.
首先我要创造一个 RDD
使用以下代码-
val account = sc.parallelize(Seq(
(1, null, 2,"F"),
(2, 2, 4, "F"),
(3, 3, 6, "N"),
(4,null,8,"F")))
工作正常-
account:org.apache.spark.rdd.rdd[(int,any,int,string)]=parallelcollectionrdd[0]at parallelize at:27
但是当你试图创造 DataFrame
从 RDD
使用以下代码
account.toDF("ACCT_ID", "M_CD", "C_CD","IND")
我在犯错误
java.lang.unsupportedoperationexception:不支持任何类型的架构
我分析过每当我把 null
价值 Seq
只有我错了。
有没有办法添加空值?
2条答案
按热度按时间tvokkenx1#
不使用RDD的替代方法:
tjvv9vkg2#
问题是,任何类型都太普通,spark根本不知道如何序列化它。在您的例子中,您应该显式地提供一些特定的类型
Integer
. 因为在scala中不能将null赋给基元类型,所以可以使用java.lang.Integer
相反。所以试试这个:下面是一个输出:
以及相应的Dataframe:
您还可以考虑一些更简洁的方法来声明空整数值,如: