【发布时间】:2017-04-20 18:36:33
【问题描述】:
基本上,我想使用 SQL 语句进行简单的删除,但是当我执行 sql 脚本时,它会抛出以下错误:
pyspark.sql.utils.ParseException: u"\n在 'a' 处缺少 'FROM'(第 2 行, pos 23)\n\n== SQL ==\n\n DELETE a.* FROM adsquare a \n-----------^^^\n"
这些是我正在使用的脚本:
sq = SparkSession.builder.config('spark.rpc.message.maxSize','1536').config("spark.sql.shuffle.partitions",str(shuffle_value)).getOrCreate()
adsquare = sq.read.csv(f, schema=adsquareSchemaDevice , sep=";", header=True)
adsquare_grid = adsqaureJoined.select("userid", "latitude", "longitude").repartition(1000).cache()
adsquare_grid.createOrReplaceTempView("adsquare")
sql = """
DELETE a.* FROM adsquare a
INNER JOIN codepoint c ON a.grid_id = c.grid_explode
WHERE dis2 > 1 """
sq.sql(sql)
注意:代码点表是在执行过程中创建的。
有没有其他方法可以删除符合上述条件的行?
【问题讨论】:
-
在 Spark 中,所有的数据抽象都是不可变的。你必须有你的 UDF 来填充你的新数据 DF,它排除了你不感兴趣的字段。
-
UDF 对于这个简单的任务来说太贵了
标签: apache-spark pyspark apache-spark-sql