apache-spark - 如何删除数据集列名称中的特殊字符
问题描述
任何人都知道如何从 Spark Java 中的数据集列名称中删除特殊字符?
我想将“_”替换为“”(参见下面的示例)。
输入:(df_in)
+--------------+-----------------+------------+------------+
|PARTITION_DATE| date_start| dt_con_ID| dt_fin_ID|
+--------------+-----------------+------------+------------+
| 2020/03/03|2019-10-14 00:00:| 11000295001| 110100156|
所需输出:(df_out)
+--------------+-----------------+------------+------------+
|PARTITION DATE| date start| dt con ID| dt fin ID|
+--------------+-----------------+------------+------------+
| 2020/03/03|2019-10-14 00:00:| 11000295001| 110100156|
我试图用代码得到这个输出:
String[] colsToRename = df_in.columns();
for (String headerName : df_in.columns()) {
Dataset<Row> df_out = df_in.withColumnRenamed(headerName, headerName.replaceAll("_", " "));
df_out.show();
}
但是有了这个,我只修改了最后一个列名
+--------------+-----------------+------------+------------+
|PARTITION_DATE| date_start| dt_con_ID| dt fin ID|
+--------------+-----------------+------------+------------+
| 2020/03/03|2019-10-14 00:00:| 11000295001| 110100156|
解决方案
每次循环运行时,程序都会更改 df_in 的不同列名(只有一个),并将更新的值放入 df_out。但是您希望同时更改所有这些。
尝试这个:
String[] colsToRename = df_in.columns();
Dataset<Row> df_out = df_in;
for (String headerName : df_out.columns()) {
Dataset<Row> df_out = df_out.withColumnRenamed(headerName, headerName.replaceAll("_", " "));
}
df_out.show();
推荐阅读
- javascript - jquery DataTables 父行和子行作为一条记录而不是两条记录发布到服务器
- jmx - 按名称堆叠/重叠指标
- r - R使用dplyr创建或修改数据框
- vba - Autofit.rowheight 取决于该行的每个单元格中的文本(字符串)
- kernel - 线程进程隔离容器
- c - 从数组中删除结构
- git - Git:致命:无法将“core.filemode”设置为“true”
- ios - 使用 View Controller 作为辅助视图的委托失败,在展开可选时意外发现 nil
- python - '\n' 循环时不使用 seek() 将 file.write() 发送到下一行
- node.js - 如何在Node js中获取客户端机器的登录用户信息