7
votes

Écrire sur la base de données Oracle à l'aide d'Apache Spark 1.4.0

J'essaie d'écrire des données sur notre base de données Oracle à l'aide de Spark 1.4.0 dataframe.write.jdbc () forte> fonction.

Le symétrique lis.jdbc () Strong> Fonction pour la lecture des données de la base de données Oracle aux objets de Dataframe fonctionne bien. Cependant, alors que j'écris le Dataframe Retour (j'ai également essayé d'écrire exactement le même objet que j'ai reçu de la base de données cverwrite em> à true) donne l'exception suivante: p>

val conf = new SparkConf().setAppName("Parser").setMaster("local[*]")
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)



val reader = sqlContext.read
val frame = reader.jdbc(url,"STUDENTS",connectionprop)

frame.printSchema()
frame.show()


val row = Row("3","4")


val struct =
  StructType(
    StructField("ONE", StringType, true) ::
      StructField("TWO", StringType, true) :: Nil)

val arr = Array(row)
val rddRow = sc.parallelize(arr)
val dframe = sqlContext.createDataFrame(rddRow,struct
)
dframe.printSchema()
dframe.show()

dframe.write.jdbc(url,"STUDENTS",connectionprop)


0 commentaires

3 Réponses :


10
votes

1 commentaires

Malheureusement, cette API est interne à étincelle. Donc, le code peut être cassé pour des versions ultérieures. Voici le cas: le quatrième paramètre a été changé de propriété en JDBCOPTIONS dans Spark 2.1. S'il vous plaît voir Problèmes.apache.org/jira/browse/spark-19296 ? Filtre = -2



-1
votes

Vous pouvez utiliser org.apache.spark.sql.execution.datasources.jdbc.jdbcotils.Savetable . Tout comme Aerondir dit.


0 commentaires

0
votes

Mise à jour: à partir d'une étincelle 2.x forte>

Il y a un problème dans lequel chaque nom de colonne est double indiqué dans une étincelle tout en créant une table JDBC et donc toutes les noms de colonnes de table Oracle devient sensible à la casse lorsque vous essayez. Pour les interroger via SQLPlus. P>

select colA from myTable; => doesn't works anymore
select "colA" from myTable; =>  works


0 commentaires