apache-spark - 如何将火花流数据集 [String] 转换为 DataFrame [Row]
问题描述
我有一个非标准的 kafka 格式消息,所以代码如下所示
val df:Dataset[String] = spark
.readStream
.format("kafka")
.option("subscribe", topic)
.options(kafkaParams)
.load()
.select($"value".as[Array[Byte]])
.map { v =>
val e = MyAvroSchema.decodeEnvelope(v)
val d = MyAvroSchema.decodeDatum(e)
d
}
此时d是代表csv行的字符串,例如
2018-01-02,user8,campaing1,type6,...
假设我可以创建一个 csvSchema:StructType
如何使用 csvSchema 将其转换为 Dataframe[Row]?一个复杂的问题是架构大小很大(大约 85 列),因此创建案例类或元组并不是一个真正的选择
解决方案
推荐阅读
- angular - 为什么我的 Angular 项目在构建时会在 index.html 中附加链接和脚本?
- bash - 如何将跨所有项目运行的 GCP Cloud Shell 命令与特定于一个项目的命令结合起来?
- python - 当我追加一个新列表时,为什么我的数组中的所有列表都会改变?
- sql - 如何在 SQL 中将查询结果作为附件发送
- javascript - 数组中的 Javascripts 方法
- jquery - 我客户网站的搜索建议功能在 Firefox 中不起作用,但在 Chrome 和 Safari 中起作用
- dart - 我正在尝试使用 TextField 的控制器,但我收到错误“NoSuchMethodError:方法'调用'被调用为空”
- python - Pandas:将函数应用于每个 float64,但获得不可散列的类型
- jquery - 带有树级别的引导折叠树视图(使用 CSS)
- laravel - 如何在 db-select 中执行自动增量?(拉拉维尔)