2016-01-27 3 views
1

Я продолжаю получать SQLException, но я подозреваю, что это не проблема. Таблица является:Spark JDBC SQLException

create table person (first varchar(30) DEFAULT NULL, last varchar(30)  DEFAULT NULL, gender char(1) DEFAULT NULL, age tinyint(4) DEFAULT NULL); 

Вставка заявления:

insert into person values('Barack','Obama','M',54); 
insert into person values('Hillary','Clinton','f',34); 

Спарк Код:

public static void main(String[] args) { 
     SparkConf conf = new SparkConf().setAppName("Stackoverflow") 
          .setMaster("local[4]"); 
     JavaSparkContext sc = new JavaSparkContext(conf); 
     SQLContext sqlContext = new SQLContext(sc); 
     Map<String, String> options = new HashMap<>(); 
     options.put("url", "jdbc:mariadb://localhost:3306/persondb"); 
     options.put("user", "user"); 
     options.put("password", "password333"); 
     options.put("dbtable", "(select * from person where gender = 'M') as someone"); 

     DataFrame jdbcDF = sqlContext.read().format("jdbc"). options(options).load(); 
     jdbcDF.show(); 

Ошибка:

Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 1 times, most recent failure: Lost task 0.0 in stage 0.0 (TID 0, localhost): java.sql.SQLException: Out of range value for column 'age' : value age is not in Integer range 

Я попытался изменить таблицу STMT (@jmj):

create table person (first varchar(30) DEFAULT NULL, last varchar(30)  DEFAULT NULL, gender char(1) DEFAULT NULL, age int DEFAULT NULL); 

Затем он работал для некоторых запросов, но в основном это дает:

Caused by: java.sql.SQLException: Out of range value for column 'age' : value age is not in Integer range 

ответ

2

Источником вашей проблемы является использование TINYINT (4) для хранения в возрасте.

Изменение типа с помощью INT INSEAD TINYINT (4).

Чтобы понять, почему именно этот post.

Надеюсь, что это поможет.

Смежные вопросы