如何使用spark createData Frame从List/seq集合创建DataFrame。

#1 val tupleData = List(("Java", "20000"), ("Python", "100000"), ("Scala", "3000"))
    sc.createDataFrame(tupleData).toDF("col1","col2") // perfectly fine 
#2    val intData = List(1,2,3)   
   sc.createDataFrame(intData).toDF("col1") // this line causing compile time issue

对#2有疑问。为什么不能为List[Int]创建DataFrame。在#1中,我创建了一个图元组列表,并且能够使用createDataFrame选项创建DF。这个方法在Product类型中是可以接受的。为什么它不接受#2。

解决方案:

def createDataFrame[A <: Product : TypeTag](data: Seq[A]): DataFrame = {}

如果你看到上面的createDataFrame函数只取Product或TypeTag的子类型。

#1 val tupleData = List(("Java", "20000"), ("Python", "100000"), ("Scala", "3000"))
    sc.createDataFrame(tupleData).toDF("col1","col2") // perfectly fine 

Tuple2是Product特性的子类型,这就是为什么它接受List of tuple2来创建数据帧。

#2    val intData = List(1,2,3)   
      sc.createDataFrame(intData).toDF("col1")

在这个函数中,你传递的是Int &amp类型的List;Int不是Product或TypeTag的子类型。

给TA打赏
共{{data.count}}人
人已打赏
未分类

WPF中的单选按钮导航问题?

2022-9-9 8:04:16

未分类

无法访问Post应用的models.py中的用户对象。Django

2022-9-9 8:04:18

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索