[英]Spark Java: Escape dot in column names for vector assembler
我有一個數據集,其中一些列名有點。 當涉及到 Vector Assembler 時,問題就出現了。 似乎他們不相處,所以我試圖以多種方式逃避這些點,但沒有任何改變。
String[] expincols = newfilenameavgpeaks.columns();
VectorAssembler assemblerexp = new VectorAssembler()
.setInputCols(expincols)
.setOutputCol("intensity");
Dataset<Row> filenameoutput = assemblerexp.transform(newfilenameavgpeaks);
我用expincols包裹了每個元素:“`”,“`”,“```”,“````”,“'”,'”'等,但什么都沒有!我也在專欄中嘗試過這些newfilenameavgpeaks 的名稱但仍然沒有任何想法如何逃脫?
如果數據集包含列ab
,你仍然可以使用df.col(`ab`)
與選擇欄.
以其名義。 這是有效的,因為Dataset.col嘗試解析列名稱並可以處理反引號。
VectorAssembler.transform但是需要所提供的數據集的架構,並使用此StructType來處理的列名VectorAssembler.transformSchema 。 StructType的apply 方法不包含處理反引號的邏輯,如果列名不完全匹配,則會拋出IllegalArgumentException
。
因此,唯一的選擇是在將列提供給 VectorAssembler 之前重命名它們:
Dataset<Row> newfilenameavgpeaks = ...
for( String col : newfilenameavgpeaks.columns()) {
newfilenameavgpeaks = newfilenameavgpeaks
.withColumnRenamed(col, col.replace('.', '_'));
}
VectorAssembler assemblerexp = new VectorAssembler()
.setInputCols(newfilenameavgpeaks.columns()).setOutputCol("intensity");
Dataset<Row> filenameoutput = assemblerexp.transform(newfilenameavgpeaks);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.