scala - 需要获取同一文件的scala中不同ID的总数
问题描述
val someData = Seq(
Row("test.zip", "abc1","A"),
Row("test.zip", "abc1","B"),
Row("test.zip", "abc3","C")
)
val someSchema = List(
StructField("file_name", StringType, true),
StructField("id", StringType, true),
StructField("chart_char", StringType, true)
)
val someDF = spark.createDataFrame(
spark.sparkContext.parallelize(someData),
StructType(someSchema)
)
需要以下结果,即相应文件名的不同 ID 的总数
预期结果:
file_name,count
test.zip 2
解决方案
val df = Seq(
("test.zip", "abc1","A"),
("test.zip", "abc1","B"),
("test.zip", "abc3","C"),
("test2.zip", "abc1","C")
).toDF("file_name","id","chart_char")
df.show()
//+---------+----+----------+
//|file_name| id|chart_char|
//+---------+----+----------+
//| test.zip|abc1| A|
//| test.zip|abc1| B|
//| test.zip|abc3| C|
//|test2.zip|abc1| C|
//+---------+----+----------+
df.select("file_name", "id")
.distinct()
.groupBy("file_name")
.count
.show
//+---------+-----+
//|file_name|count|
//+---------+-----+
//| test.zip| 2|
//|test2.zip| 1|
//+---------+-----+
推荐阅读
- mysql - sql获取中间记录
- react-native - 使用 URI 反应原生图像未在设备上显示
- excel - 运行时错误 438 消息确定 LastRow
- bash - cURL 从文件中读取 URL - 进程休眠
- django - 在 django 中验证上传文件
- c# - .Net jQuery WYSIWYG 隐藏在 AJAX 回发上
- php - 未定义的属性:App\User::$login using Jenssegers\Mongodb
- latex - 基本 Miktex - QWindowsWindow::setGeometry: 无法设置几何 451x317+1010+537
- google-colaboratory - 是否可以创建本地 Google Colab 服务器?
- io - 免费 Pascal IDE:Writeln 和 Readln 无法正常工作