Java Spark:jdbc数据集上的朴素贝叶斯<;世界其他地区>;

Java Spark:jdbc数据集上的朴素贝叶斯<;世界其他地区>;,java,mysql,jdbc,apache-spark,apache-spark-mllib,Java,Mysql,Jdbc,Apache Spark,Apache Spark Mllib,我尝试使用Spark的MLLib Naive Bayes算法进行一些预测。不幸的是,我无法做到这一点,因为显然,这些算法使用的是“libsvm”格式(label:feature),而我无法从我的数据集中获得。我正在研究Java,我从MySQL数据库获取数据。。。以下是我使用的代码: public class SparkML { public static void main(String[] args) throws IOException { //This two l

我尝试使用Spark的MLLib Naive Bayes算法进行一些预测。不幸的是,我无法做到这一点,因为显然,这些算法使用的是“libsvm”格式(label:feature),而我无法从我的数据集中获得。我正在研究Java,我从MySQL数据库获取数据。。。以下是我使用的代码:

public class SparkML {
    public static void main(String[] args) throws IOException {

        //This two lines hide spark logs
        Logger.getLogger("org").setLevel(Level.ERROR);
        Logger.getLogger("akka").setLevel(Level.ERROR);

        //Here I create the spark session
        SparkSession spark = SparkSession.builder().appName("Test").config("spark.master", "local[*]").getOrCreate();

        // This three lines take care of DB connection   
        Properties dbProperties = new Properties();
        dbProperties.load(new FileInputStream(new File("properties.flat")));
        String jdbcUrl = dbProperties.getProperty("jdbcUrl");

        // Retrieving training data
        String table = "spark_tests.sparkTrainData";
        Dataset<Row> train = spark.read().jdbc(jdbcUrl, table, dbProperties);

        // Retrieving test data    
        table = "spark_tests.sparkTrainData";
        Dataset<Row> test = spark.read().jdbc(jdbcUrl, table, dbProperties);

        NaiveBayes nb = new NaiveBayes();
        NaiveBayesModel model = nb.fit(train); //When executing this, I get "java.lang.IllegalArgumentException: Field "features" does not exist."    
    }
}
公共类SparkML{
公共静态void main(字符串[]args)引发IOException{
//这两行隐藏了spark日志
Logger.getLogger(“org”).setLevel(Level.ERROR);
Logger.getLogger(“akka”).setLevel(Level.ERROR);
//在这里,我创建了spark会话
SparkSession spark=SparkSession.builder().appName(“Test”).config(“spark.master”,“local[*]”)。getOrCreate();
//这三条线路负责DB连接
Properties dbProperties=新属性();
load(新文件输入流(新文件(“properties.flat”));
字符串jdbcUrl=dbProperties.getProperty(“jdbcUrl”);
//检索训练数据
String table=“spark\u tests.sparkTrainData”;
Dataset train=spark.read().jdbc(jdbcUrl,table,dbProperties);
//检索测试数据
表=“火花试验.火花训练数据”;
Dataset test=spark.read().jdbc(jdbcUrl,table,dbProperties);
NaiveBayes nb=新的NaiveBayes();
NaiveBayesModel=nb.fit(train);//执行此操作时,我得到“java.lang.IllegalArgumentException:字段“features”不存在”
}
}
你知道我怎样才能做到这一点吗?或者有没有别的方法?我已经检查了Spark的API和Spark的教程,它们只适用于*.txt文件

MLlib支持存储在一台机器上的局部向量和矩阵,以及由一个或多个RDD支持的分布式矩阵。局部向量和局部矩阵是用作公共接口的简单数据模型。基本的线性代数运算由Breeze提供。监督学习中使用的训练示例在MLlib中称为“标记点”

您必须将数据转换为“标记点”,如果您提供列车数据的示例,也许我可以帮助您编写代码