【发布时间】:2020-07-10 22:02:01
【问题描述】:
我在 java8 中使用 spark-sql-2.4.1v。
我有动态列列表被传递到我的函数中。
即
List<String> cols = Arrays.asList("col_1","col_2","col_3","col_4");
Dataset<Row> df = //which has above columns plus "id" ,"name" plus many other columns;
需要选择cols + "id" + "name"
我的做法如下
Dataset<Row> res_df = df.select("id", "name", cols.stream().toArray( String[]::new));
这导致编译错误。那么如何处理这个用例。
试过了:
当我执行以下操作时:
List<String> cols = new ArrayList<>(Arrays.asList("col_1","col_2","col_3","col_4"));
cols.add("id");
cols.add("name");
给出错误
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
【问题讨论】:
-
你得到
UnsupportedOperationException,因为你使用的List的实际类型是Arrays.ArrayList(从Arrays.asList返回)而不是util.ArrayList。
标签: java dataframe apache-spark apache-spark-sql