首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据集不显示任何列

数据集不显示任何列
EN

Stack Overflow用户
提问于 2018-09-12 16:08:29
回答 1查看 39关注 0票数 0

我是新来的火花,并试图学习它。我正在尝试使用类从textFile创建数据集。当我执行dataset.show()时,它显示所有空白,列长度显示0。

代码:

代码语言:javascript
运行
复制
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;

public class DatasetExample {

    public static void main(String[] args) {
        test(fileName);
    }

    static final String fileName = "inputFile";
    static SparkConf conf = new SparkConf().setMaster("local").setAppName("Test");
    static JavaSparkContext sc = new JavaSparkContext(conf);
    static SparkSession session = SparkSession.builder().config(conf).getOrCreate();

    private static void test(String fileName){
        JavaRDD<Input> rdd = sc.textFile(fileName).map(new Function<String, Input>() {
            @Override
            public Input call(String s) throws Exception {
                String[] str = s.split(",");
                System.out.println(str[0] + " and " + str[1] + " and " + str[2]);
                return new Input(str[0], str[1], Integer.parseInt(str[2]));
            }
        });
        Dataset<Row> dataSet = session.createDataFrame(rdd, Input.class);
        dataSet.show();
        System.out.println("Column length is: " + dataSet.columns().length);

    }

    static class Input{
        String key;
        String value;
        int number;

        Input(String key, String value, int number){
            this.key = key;
            this.value = value;
            this.number = number;
        }
    }
}

所显示的产出如下:

代码语言:javascript
运行
复制
foo and A and 1
foo and A and 2
foo and A and 1
foo and B and 2
foo and B and 1
bar and C and 2
bar and D and 3
dek and X and 3
max and X and 3
eer and P and 3

++
||
++
||
||
||
||
||
||
||
||
||
||
++

Column length is: 0

我不想显式地定义模式,但是我希望它从类结构中获取模式。我可能错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-12 19:48:18

来自JavaBeans Wiki定义

在基于JavaBeans的计算中,JavaBeans是将许多对象封装到单个对象( bean)中的类。它们是可序列化的,具有零参数构造函数,并允许使用getter和setter方法访问属性。

因此,公开并生成getter/setter:

代码语言:javascript
运行
复制
public static class Input {
    String key;
    String value;
    int number;

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public Input(String key, String value, int number) {
        this.key = key;
        this.value = value;
        this.number = number;
    }
}

你就有产出了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52299436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档