2016-11-16 67 views
0

大量的文档显示可以从案例类转到数据框,但是我还没有找到从数据框转到案例类的好方法。如何将一个数据框转换为一个案例类?

假设我有一个包含50列的数据框,但想要选择大约5列并将其放入新表中。我可以接近这样说:

sqlContext.sql("select [1, 2, 3, 4, 5] from test").registerTempTable("newTable") 

但newtable中会有像6,7定制值一些列(或0现在,但此列只是没有在测试表中存在)。 为了解决这个问题,我试图创建的情况下类看起来像这样:

case class newTable(1, 2, 3, 4, 5, 6, 7) 

最后,我希望通过5从测试表中,然后输入6,7中提取塔1的任何我想喜欢。我只是没有找到一个这样做的好方法。

+0

我认为,所有你需要的是'withColumn'后的选择,添加新列 – maasg

回答

1

你可以使用这样的:

dataframe.select($"1".as("1"), $"2".as("2"), $"3".as("3"), $"4".as("4"), $"5".as("5")).as[newTable] 

注: 你应该列名匹配在你的case类的字段名称

+0

如何将此与我创建的案例类合并? – user3551523

+0

此外,我得到一个错误: 错误:重载的方法值与替代方法: (别名:符号)org.apache.spark.sql.DataFrame (别名:字符串)org.apache.spark。 sql.DataFrame 不接受类型参数 – user3551523

+0

它因为你的案例类和你的名字列dosnt匹配 – HuntsMan

相关问题