apache-spark - 将 Array[(Any, (Any, Any))] 转换为具有 2 列的 spark 数据帧
问题描述
我有一个类型的数组Array[(Any, (Any, Any))]
,我想将其转换为火花dataframe
,以便第一个值出现在第一列中,元组出现在第二列中。
解决方案
首先,DataFrame
对象有一个强模式——你可以将你的RDD
or隐式转换Seq
为 a DataFrame
,但它会将强模式附加到你的集合中。由于Any
type 只是一种说法,我不知道我的 type 是什么,因此您必须先将其强制转换为某种特定类型,然后才能使其成为 a 的一部分DataFrame
。
假设您将所有内容转换为String
:
import spark.implicits._
val df = Array.empty[(Any, (Any, Any))]
.map{case (first, (second, third)) =>
(first.toString, (second.toString, third.toString))
}.toSeq.toDF
df.printSchema
给
root
|-- _1: string (nullable = true)
|-- _2: struct (nullable = true)
| |-- _1: string (nullable = true)
| |-- _2: string (nullable = true)
推荐阅读
- python - 如何通过与 SQLAlchemy 的关系支持 ManyTableToManyTable?
- ios - Swift - 一旦日期过去,将数据从一个 TableViewController 传输到另一个
- java - 使用递归的第一个计时器
- field - micronaut 多值表单字段支持?
- c++ - 这个 C++ 隐式转换是如何发生的?
- html - 在 Bootstrap 中减少内容之间空间的最简洁方法
- java - 我想使用注释 @ComponentScan 但我收到错误“考虑定义类型的 bean”SpringBoot 2.1.0.RELEASE
- django - Django,在运行服务器中运行时从 STATIC_ROOT 提供静态文件?
- authentication - Kerberos 双跳类似问题 - 即使不使用 Windows 身份验证
- phonegap-build - 应用程序加载器警告,cordova webview