Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 数据未通过SPARK以排序格式写入目标oracle表_Apache Spark_Pyspark_Apache Spark Sql - Fatal编程技术网

Apache spark 数据未通过SPARK以排序格式写入目标oracle表

Apache spark 数据未通过SPARK以排序格式写入目标oracle表,apache-spark,pyspark,apache-spark-sql,Apache Spark,Pyspark,Apache Spark Sql,我在配置单元中有一个具有以下模式的表 emp_id:int emp_名称:string 我已经从上面的配置单元表创建了数据帧 df = sql_context.sql('SELECT * FROM employee ORDER by emp_id') df.show() 运行上述代码后,我看到数据在emp_id上正确排序 我正试图通过下面的代码将数据写入Oracle表 df.write.jdbc(url=url, table='target_table', properties=propert

我在配置单元中有一个具有以下模式的表 emp_id:int emp_名称:string

我已经从上面的配置单元表创建了数据帧

df = sql_context.sql('SELECT * FROM employee ORDER by emp_id')
df.show()
运行上述代码后,我看到数据在emp_id上正确排序

我正试图通过下面的代码将数据写入Oracle表

df.write.jdbc(url=url, table='target_table', properties=properties,  mode="overwrite")
据我了解,之所以会发生这种情况,是因为在每个数据分区上同时运行多个executor进程,并且通过查询应用的排序被应用于特定分区,并且当多个进程同时向Oracle写入数据时,结果表的排序被扭曲

我进一步尝试将数据重新分区到一个分区(这不是理想的解决方案),然后将数据写入oracle,排序工作正常


有没有办法从SPARK向RDBMS写入排序后的数据;DR在使用关系系统时,绝不应依赖插入顺序。Spark在这里并不重要

关系数据库,包括Oracle,不能保证存储数据的任何内在顺序。存储记录的确切顺序是实现的一个细节,在数据的生命周期中可能会发生变化

Oracle中唯一的例外是:

索引组织表的数据以主键排序方式存储在B树索引结构中

当然,这需要一个能够可靠地确定顺序的主键