scala - 如何将数据帧的每一列从二进制转换为字节数组
问题描述
我有一个具有以下架构的数据集 ds1
root
|-- binary_col1: binary (nullable = true)
我根据需要使用
val ds2 = ds1.map(row => row.getAs[Array[Byte]]("binary_col1"))
但是,当数据集有两列二进制类型时,如何转换数据集?
root
|-- binary_col1: binary (nullable = true)
-- binary_col2: binary (nullable = false)
我想创建具有 2 列的新数据集
( binary_col1.toByteArray , binary_col2.toByteArray)
解决方案
您可以as
在数据框/数据集上使用,并提供 tuple2 类型:
val ds2 = ds1.as[(Array[Byte], Array[Byte])]
这比使用更好,map
因为它保留了列名。
当然,你也可以使用map
,例如
val ds2 = ds1.map(row => (row.getAs[Array[Byte]]("binary_col1"), row.getAs[Array[Byte]]("binary_col2")))
推荐阅读
- java - Gremlin Driver 在使用多个端点初始化 ConnectionPool 时阻塞
- sql-server - 如何使用 Microsoft SQL Server 提高地理服务器的性能
- centos - Virtualbox CentOS 镜像没有 IP 地址
- linux - 无法在 RHEL 7.6 中将 Perl 5.8 升级到 5.16
- javascript - 我想在按箭头键时在我的网站中移动角色,但不确定实现该目标需要什么
- amazon-web-services - 使用 aws 代码管道将 github 的 repo 的特定目录(树)部署到 aws s3 存储桶
- typescript - 当键不存在时,有没有办法让打字稿抛出错误?
- pentaho - PDI。我想将一行聚合到 csv 即时创建
- apache - 端到端 HTTP2 - 使用 haproxy、apache 和 varnish - 可能吗?需要吗?
- mathematical-optimization - 对抗随机玩家的最佳胜率/平局百分比