我有一个包含以下数据的hdfs文件
key1=value1 key2=value2 key3=value3...
key1=value11 key2=value12 key3=value13..
我们使用一个内部框架,该框架将数据集作为java方法的输入,应按如下所示进行转换并放入配置单元表中
预期输出:
key1 | key 2 | key3
----------+-------------+----------
value1 | value2 | value3
value11 | value12 | value13
Hdfs文件大约有60个键值对,因此无法在Dataset上手动执行withcolumn()。任何帮助表示赞赏。
编辑1: 到目前为止,这是我能写的。除了第一个迭代
,Dataset.withColumn()似乎没有在循环中工作 String[] columnNames = new String[dataset.columns().length];
String unescapedColumn;
Row firstRow= (Row)dataset.first();
String[] rowData = firstRow.mkString(",").split(",");
for(int i=0;i<rowData.length;i++) {
unescapedColumn=rowData[i].split("=")[0];
if(unescapedColumn.contains(">")) {
columnNames[i] = unescapedColumn.substring(unescapedColumn.indexOf(">")+1).trim();
}else {
columnNames[i] = unescapedColumn.trim();
}
}
Dataset<Row> namedDataset = dataset.toDF(columnNames);
for(String column : namedDataset.columns()) {
System.out.println("Column name :" + column);
namedDataset = namedDataset.withColumn(column, functions.substring_index(namedDataset.col(column),"=",-1));
}