gpt4 book ai didi

java - dataset.show 上的 ClassCastException

转载 作者:行者123 更新时间:2023-12-01 21:54:40 25 4
gpt4 key购买 nike

我的架构:

 StructField[] fields = new StructField[] {
DataTypes.createStructField("id", DataTypes.LongType, true),
DataTypes.createStructField("name", DataTypes.StringType, true)
}

StructType schema = new StructType(fields);

由于不支持压缩,我正在读取多个 CSV 文件,我没有使用 .read().csv() 。无论如何,我在解压缩后读取了 CSV 文件。我检查每一行并从由分隔符分隔的行创建一个新行: ,

List<Row> rows = new ArrayList();
Row row = RowFactory.create(line.split(","));
rows.add(row);

List<Tuple2<String, List<Row>> csvRows = new ArrayList();
rows.add(new Tuple2("..", rows);

我的 CSV 行如下:

"1","ABCD"
"2","EFGH"

当我尝试创建 Dataset<Row> 时从我的列表和调用显示中我得到 ClassCastException String cannot be cast to Long .

Dataset<Row> set = spartSession.createDataFrame(csvRows.get(0)._2, schema);  
set.show();

但是“1”应该可以从 String 转换为 Long。

最佳答案

您无法从 String 转换为 Long,只需尝试以下操作:

Long number = (Long) "1";

这不会编译并显示消息Cannot cast from String to Long,这是完全正常的。 Long 不是 String 的子类。

如果我正确理解您的代码,您首先必须解析行中的值(这是一个字符串),然后再将其传递给 createDataFrame

类似的事情:

Long.parseLong(csvRows.get(0)._2)

希望这有帮助!

关于java - dataset.show 上的 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58747441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com