欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Spark动态DataFrame实现

时间:2023-07-15

在Spark中如何实现在运行中,如何动态修改Dataframe表结构呢?
您可以参照以下,动态添加gender,address的方式

test("动态Dataframe测试"){ val frame = spark.table("app_offline.task_table_zhihuiya") val schema: StructType = frame.schema .add("gender", StringType) .add("address", StringType) frame .map(row=>{ // 得到Row中的数据并往其中添加我们要新增的字段值 val buffer = Row.unapplySeq(row).get.toBuffer buffer.append("男") //增加一个性别 buffer.append("北京") //增肌一个地址 // 获取原来row中的schema,并在原来Row中的Schema上增加我们要增加的字段名以及类型. val schema: StructType = row.schema .add("gender", StringType) .add("address", StringType) // 使用Row的子类GenericRowWithSchema创建新的Row val newRow: Row = new GenericRowWithSchema(buffer.toArray, schema) // 使用新的Row替换成原来的Row newRow })(RowEncoder(schema)) .printSchema() }

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。