0
我正在嘗試用新的Dataframe API進行開發,但是我的 出現錯誤。insertIntoJDBC Spark問題
我有一個現有的oracle數據庫,我想插入行。 我從RDD創建一個Dataframe,然後使用「insertIntoJDBC」函數。 看來,數據幀重新排列它們內部的數據。 因此,出現錯誤是因爲字段未按 正確 的順序插入。
有沒有辦法指定我的變量在 數據庫中的名稱或順序?
如果這是一個錯誤,在這裏重現它的一個例子:
import java.io.Serializable;
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.DataFrame;
import org.apache.spark.sql.SQLContext;
public class ErilView implements Serializable {
private static final String CONNECTION_URL = "jdbc:oracle:<drivertype>:<user>/<password>@<database>";
private static final String TABLE_NAME = "TABLE_NAME";
private static final JavaSparkContext sc = new JavaSparkContext(
new SparkConf().setAppName("ErilView"));
private static final SQLContext sqlContext = new org.apache.spark.sql.SQLContext(
sc);
public static void main(String[] args) {
JavaRDD<Person> rows = sc.textFile("path/dataset/sample.txt").map(
new Function<String, Person>() {
public Person call(String line) throws Exception {
String[] fields = line.split("|");
Person person = new Person();
person.setName(fields[0]);
person.setAge(Integer.parseInt(fields[1].trim()));
return person;
}
});
DataFrame schemaPeople = sqlContext.createDataFrame(rows, Person.class);
// Option 1: Create new table and insert all records.
schemaPeople.createJDBCTable(CONNECTION_URL, TABLE_NAME, true);
// Option 2: Insert all records to an existing table.
schemaPeople.insertIntoJDBC(CONNECTION_URL, TABLE_NAME, false);
}
}
請讓我知道任何方式來填充正確的順序數據。
由於提前 --Chaitu
請在您的代碼下附上堆棧跟蹤 –
請刪除「spark-java」標記,它與Apache Spark無關,這只是令人困惑。 –