Я новичок в искры apache и хочу вставить класс модели в mysql Db, используя искру в java.Как вставить модель в mysql с искрою и java
Я пробовал использовать нижеприведенный код. но он не работает должным образом.
модель:
public class User implements Serializable{
private static final long serialVersionUID = 1L;
private int id;
private String name;
private String email;
private String city;
private String country;
private String ip;
private static StructType structType = DataTypes.createStructType(new StructField[] {
DataTypes.createStructField("id", DataTypes.IntegerType, false),
DataTypes.createStructField("name", DataTypes.StringType, true),
DataTypes.createStructField("email", DataTypes.StringType, true),
DataTypes.createStructField("city", DataTypes.StringType, true),
DataTypes.createStructField("country", DataTypes.StringType, true),
DataTypes.createStructField("ip", DataTypes.StringType, true)
});
//getters & setters
MyApp:
public class MyApp {
private static final String MYSQL_USERNAME = "root";
private static final String MYSQL_PWD = "";
private static final String MYSQL_CONNECTION_URL = "jdbc:mysql://localhost:3306/sample?user=" + MYSQL_USERNAME + "&password=" + MYSQL_PWD;
private static final JavaSparkContext sc =
new JavaSparkContext(new SparkConf().setAppName("SparkSaveToDb").setMaster("local[*]"));
private static final SQLContext sqlContext = new SQLContext(sc);
public static void main(String[] args) {
//Sample data-frame loaded from a JSON file
try{
List<User> list = new ArrayList<User>();
User us = new User();
us.setId(1);
us.setName("Ravi");
us.setEmail("[email protected]");
us.setCity("hyderabad");
us.setCountry("India");
us.setIp("127.0.0.1");
list.add(us);
//Creating RDD
JavaRDD<User> personsRDD = sc.parallelize(list);
DataFrame userDf = sqlContext.createDataFrame(personsRDD, User.class);
//JdbcUtils.saveTable(userDf, MYSQL_CONNECTION_URL, "users", prop);
userDf.write().mode(SaveMode.Append).jdbc(MYSQL_CONNECTION_URL, "users", new java.util.Properties());
}catch(Exception e){
System.out.println(e);
System.exit(0);
}
}
}
Когда я запускаю приведенный выше код я получаю НИЖЕ за исключением
java.sql.SQLException: Incorrect integer value: 'hyderabad' for column 'id' at row 1**
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2734)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
Может кто-нибудь, пожалуйста, дайте мне знать, как решить эту проблему и вставить в базу данных mysql. Заранее спасибо
Спасибо за ответ. yes 'is' is AUTO_INCREMENT, но даже если я прокомментирую 'us.sedId (1)', я получаю ошибку ** 'java.sql.SQLException: Неверное целочисленное значение:' Hyderabad 'для столбца' id 'at строка 1 '**, а таблица - вновь созданная таблица. – user4926135
@ user4926135 вы можете показать нам ваш запрос? –
@ user4926135 проверить мое редактирование –