Java Spark:jdbc数据集上的朴素贝叶斯<;世界其他地区>;
我尝试使用Spark的MLLib Naive Bayes算法进行一些预测。不幸的是,我无法做到这一点,因为显然,这些算法使用的是“libsvm”格式(label:feature),而我无法从我的数据集中获得。我正在研究Java,我从MySQL数据库获取数据。。。以下是我使用的代码: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
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中称为“标记点”
您必须将数据转换为“标记点”,如果您提供列车数据的示例,也许我可以帮助您编写代码