apache-spark - Spark Java - 用数据集中的另一个字符串替换特定字符串
问题描述
我正在编写 spark 应用程序,其中有 100 个字段的数据集。我想在所有 100 个字段中用 acct 替换“Account”。
dataset.show();
+-------+-------+---------+-------------------------------|
| id | loc| price |description|postdate |
+-------+-------+---------|-----------+-------------------+
|001 |account|315000.25|account |2020-06-01 |
|account|account|account |sampledes |2020-06-05 |
|003 |kochin |315000 | |account |
|004 |madurai|null |abc | |
|005 |account|15000.20 |n.a |2021/12/01 |
+-------+-------+---------+-----------+-------------------|
结果:- 在所有字段中将帐户替换为帐户。
+-------+-------+---------+-------------------------------|
| id | loc| price |description|postdate |
+-------+-------+---------|-----------+-------------------+
|001 |acct |315000.25|acct |2020-06-01 |
|acct |acct |acct |sampledes |2020-06-05 |
|003 |kochin |315000 | |acct |
|004 |madurai|null |abc | |
|005 |acct |15000.20 |n.a |2021/12/01 |
+-------+-------+---------+-----------+-------------------|
我看到了正则表达式替换功能,但我们必须为每一列编写。所以我正在寻找替代方案。
提前致谢
解决方案
你不能尝试这个迭代所有列并用替换字符更新列的代码
oldDF.show()
val newDF = oldDF.columns.foldLeft(oldDF) { (replaceDF, colName) =>
replaceDF.withColumn(
colName,
regexp_replace(col(colName), "account", "acct ")
)
}
newDF.show()
推荐阅读
- php - 在codeigniter中生成11位序列号
- javascript - 如何发送参数来发布 http 请求?
- android - 加载地图并且相机移动到当前位置时应用程序崩溃
- git - 如何在没有初始加载文件和历史记录的情况下克隆/连接远程 GIT 存储库?
- css - 如何为 Angular 6 项目全局添加自定义 CSS 文件
- java - int i = 10 + + 11 - - 12 + + 13 - - 14 + + 15 的输出;如何?
- android - 通知在模拟器上有效,但在真实设备上无效
- python - 使用 Python 从视频 (MP4) 中提取帧的 GPS 信息
- javascript - 将特定属性添加到 div 中的锚标记
- android - 如何在 xamarin.forms for android 中设置选定选项卡的背景颜色?