scala - Spark Scala - 如何初始化一个包含 1000 列的空数据框
问题描述
我想在 Spark (Scala) 中初始化一个空的 DataFrame。DataFrame 中的列数必须为 1000 和一个附加的 Label 列,并且最初数据框应该是空的。
在向 DataFrame 插入新行时,我必须根据列表值仅在特定列中插入值。
如果我的清单是
val myList = List(List(4), List(2,3,6), List(5,8)...)
我希望我的数据框包含如下值:
Id col1 col2 col3 col4 col5 col6 col7 col8.... col1000 Label
1 0 0 0 1 0 0 0 0 0 x
2 0 1 1 0 0 1 0 0 0 y
3 0 0 0 0 1 0 0 1 0 x
....
有什么方法可以让我继续这样做吗?
解决方案
Sparkdataframes
是不可变的,因此无法追加/插入行。相反,您可以dataframe
使用 single创建新的row
并使用UNIONALL
并将其附加到原始文件并再次分配给原始文件,例如
var df1=Seq((1,0,1),(0,0,0)).toDF("col1","col2","col3")
val df2=Seq((1,1,1)).toDF("col1","col2","col3")
df1=df1.unionAll(df2)
如果你有
scala> df1.show
+----+----+----+
|col1|col2|col3|
+----+----+----+
| 1| 0| 1|
| 0| 0| 0|
+----+----+----+
和
scala> df2.show
+----+----+----+
|col1|col2|col3|
+----+----+----+
| 1| 1| 1|
+----+----+----+
然后你可以这样做
df1=df1.unionAll(df2)
输出:
scala> df1.show
+----+----+----+
|col1|col2|col3|
+----+----+----+
| 1| 0| 1|
| 0| 0| 0|
| 1| 1| 1|
+----+----+----+
推荐阅读
- c# - 获取自定义控件的值
- c# - Xamarin.Forms 图像未从源显示
- google-sheets - Google 表格 SUMPRODUCT/COUNTIF 公式问题
- react-native - PayPal REST API 获取 react-native 中的 access_token,“AUTHENTICATION_FAILURE”
- php - PHP变量不打印任何值
- kubernetes - Kubernetes - Consul - Envoy - 如何设置负载均衡算法?
- reactjs - TypeScript 属性 'selected' 不存在于类型 '{ id: string; 值:字符串;标签:字符串;颜色:字符串;}'.ts(2339)
- mips - Mips Syscall 5 无效整数输入错误
- node.js - 在 Lambda 中调用 IAM API 超时
- c++ - 在 C++ 中将 Slice 对象显式序列化为字符串或 ostream