scala - 使用字符串列表在 scala 中创建数据框
问题描述
我的数据以 List[String] 的形式出现,其中每个字符串都是一行,列用逗号分隔。我必须创建一个数据框,以便我可以通过在其上创建一个视图来查询数据。有人可以指导我如何将其转换为 Dataframe。
List[String] = List([Table,EXTERNAL,hive,name1],[Table,EXTERNAL,hive,name2],[Table,EXTERNAL,hive,name3])
解决方案
import spark.implicits._
val df = List("Table,EXTERNAL,hive,name1","Table,EXTERNAL,hive,name2","Table,EXTERNAL,hive,name3")
.map(_.split(",") match {
case Array(table, tableType, db, name) => (table, tableType, db, name)
})
.toDF("table", "type", "db", "name")
df.show()
df.printSchema()
打印:
+-----+--------+----+-----+
|table| type| db| name|
+-----+--------+----+-----+
|Table|EXTERNAL|hive|name1|
|Table|EXTERNAL|hive|name2|
|Table|EXTERNAL|hive|name3|
+-----+--------+----+-----+
root
|-- table: string (nullable = true)
|-- type: string (nullable = true)
|-- db: string (nullable = true)
|-- name: string (nullable = true)
推荐阅读
- python - 我的程序不断发送垃圾邮件打印功能 Python
- node.js - 如何在 Node.js 中构建一个类来抽象 RabbitMQ 和 amqplib 功能
- java - 没有参数的 super() 关键字
- rust - 将 &i64 转换为 &[u8; 的惯用方法是什么?8]?
- makefile - Vala 的 Makefile
- laravel-5 - 如果 \Log::info 的输出取决于某些选项?
- javascript - 有没有办法让嵌套循环使用与循环相同的计数器?
- laravel - 如何在带警卫的流明中实现多重身份验证?
- iframe - 嵌入 iframe 的 Docusign 似乎不遵守跨站点脚本指令
- r - 具有小数据集的 R 树不会初始化树