我有一个在MySQL中创建的MySQL表:
create table nnll (a integer, b integer)
我已经初始化了pyspark(2.1)并执行了代码:
sql('create table nnll using org.apache.spark.sql.jdbc options (url "jdbc:mysql://127.0.0.1:3306", dbtable "prod.nnll", user \'user\', password \'pass\')')
sql('insert into nnll select 1,2')
sql('insert into nnll select * from nnll')
出于某种原因,我得到了例外:
AnalysisException: u'Cannot insert overwrite into table that is also being read from.;;\nInsertIntoTable Relation[a#2,b#3] JDBCRelation(prod.nnll) [numPartitions=1], OverwriteOptions(false,Map()), false\n+- Project [a#2, b#3]\n +- SubqueryAlias nnll\n +- Relation[a#2,b#3] JDBCRelation(prod.nnll) [numPartitions=1]\n'
似乎我的insert语句被spark转换为insert overwrite语句,因为我试图插入到我查询的同一个表中(在同一个分区上,我只有一个)。 有没有办法避免这种情况,并使spark将此查询转换为常规查询?
非常感谢!