基本的に、私はSQLステートメントを使用して簡単な削除をしたいと思ったが、私は、SQLスクリプトを実行するとき、それは次のようなエラー私をスロー:Sparkデータフレームから作成されたテーブルの行を削除するには?
pyspark.sql.utils.ParseException: u"\nmissing 'FROM' at 'a'(line 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では、すべてのデータ抽象は不変です。興味のないフィールドを除外したUr新規データDFを作成するためにUDFを持っている必要があります。 – BDR
UDFはこの単純なタスクには高価すぎる –