apache-spark - 在现有 spark 数据集的开头添加一行
问题描述
有没有办法将新 ROW 添加到 spark 中的现有数据集。我知道这withColumn
可以帮助添加一个新列。但我想要一个新行到我的数据集中。
现有数据集:
Dataset<String> uniqData = bookData.mapPartitions(new calculator(), Encoders.STRING());
uniqData 包含以下元素:
amount:10,cycle:400
amount:20,cycle:300
amount:30,cycle:500
new Dataset:
totalcount:20000--new row
amount:10,cycle:400
amount:20,cycle:300
amount:30,cycle:500
解决方案
数据集是不可变的,因此您无法添加任何内容。但是您可以使用包含新行的相同架构创建一个新数据集,然后创建一个旧数据集和新数据集的第三个数据集。
val originalDf = Seq("name: ABC",
"class: 10",
"name: ABC1",
"class: 101",
"name: ABCw",
"class: 1019387",
"name: ABCjdgewk",
"class: 10118279").toDF()
val newRow = Seq("new row comes here").toDF()
val result = newRow.union(originalDf)
result.show()
印刷
+------------------+
| value|
+------------------+
|new row comes here|
| name: ABC|
| class: 10|
| name: ABC1|
| class: 101|
| name: ABCw|
| class: 1019387|
| name: ABCjdgewk|
| class: 10118279|
+------------------+
当您只有少量数据适合您的一个执行程序(如本例中)时,排序看起来很容易。如果数据分布在集群中,通常不清楚有序的含义。大多数 Spark 转换不会在数据中保持顺序。
推荐阅读
- ios - 无法为 Unity IOS 配置 Firebase 应用
- python - 如何将字符串转换为数据类型变量?
- flutter - 在 Dart 中,通过类型检查检查一个类是否继承了父类
- html - 如何只更改里面的内容单击第二个html文件的链接时标记?
- mysql - 根据年、月、季度拉取数据
- bash - 我正在尝试在 bash 中找到 gcd 但没有成功?
- bootstrap-4 - 关于引导轮播调整大小的问题
- c# - 通过网络将数据打印到 Zebra 打印机
- python - python list of dicts - 提取列表的键值
- hosting - 如何在 CPANEL NODEJS 服务器中部署或托管 NESTJS API?