我正在尝试通过 Spark 为 mysql 中的每一行设置row number
SET @row_num = 0;
SELECT @row_num := @row_num + 1 as row_number,t.* FROM table t
它在 MySQL 中运行良好,但从火花中抛出错误
val setrownum = "SET property_key[=@row_num = 0]" // "SET @row_num = 0"
val rownum = "SELECT property_key := property_key + 1 as row_number,t.* FROM table t"
val setrowexe = spark.sql(setrownum)
val rownumexe = spark.sql(rownum)
我也试过
val setrownum = "SET property_key[=@row_num = 0];SELECT property_key := property_key + 1 as row_number,t.* FROM table t"
val setrowexe = spark.sql(setrownum)
setrowexe.show()
但没有运气。如何执行上述两个查询以设置表行号?
SELECT property_key:=property_key+1 as rowid,d.* FROM destination d, (SELECT property_key[=@rowid:=0]) as init
此查询在 MySQL 中执行,但不是通过 Spark 执行的
上面的查询在MySQL中执行,但不通过Spark执行
它不会。这些在Spark SQL中都不支持。行号可以使用带有窗口函数的标准 SQL 获取。
SELECT row_number over (...) FROM table
外部数据库的类型不相关。在源服务器上执行查询的唯一方法是在数据帧定义中使用子查询,但它不支持此类扩展。