2017-04-12 44 views
0

在开发Spark单元测试时,我试图创建一个包含数组的数据框。我真的不在乎数组中的内容(现实生活中的复杂数据类型),因为我只是对它的大小感兴趣。创建Spark数据帧失败的数组类型任何或_

val data = spark.createDataframe(Seq(
    ("a", 1, Array()), 
    ("b", 2, Array()) 
)).toDF("columnA", "columnB", "columnC") 

我收到以下错误是关系到columnC(删除columnC它工作正常):scala.MatchError: Nothing

所以我尝试使用Array[Any]()和我:Schema for type Any is not supported

所以我试图用Array[_]()我得到了:unbound wildcard type

所以我尝试使用Array[Object](),我得到了:Schema for type java.lang.Object is not supported

最后,我决定问Stackoverflow ...

+0

您可能并不在乎Spark类型。要知道如何存储数组,它知道类型并调用正确的编码器。 – zero323

+0

你可以试试Seq() –

回答

0

数据帧支持limited set of data types。不包括ObjectAny。您可以使用Array[Int]()(举一个例子)来创建一个不会导致模式推断出现问题的空类型数组。