通过SparkSQL插入MySQL表,通过查询同一个表

时间:2017-08-01 18:36:44

标签: mysql apache-spark pyspark apache-spark-sql pyspark-sql

我有一个在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将此查询转换为常规查询?

非常感谢!

0 个答案:

没有答案