Apache spark Spark WindowExec:没有为窗口操作定义分区—将所有数据移动到单个分区—这可能会导致严重的性能下降
在使用以下SQL Spark转换时,获取上述警告消息和性能问题Apache spark Spark WindowExec:没有为窗口操作定义分区—将所有数据移动到单个分区—这可能会导致严重的性能下降,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,在使用以下SQL Spark转换时,获取上述警告消息和性能问题 val sqlstr = """SELECT * FROM ( SELECT AC.*, ROW_NUMBER OVER (PARTITION BY ACCOUNT_TYPE, CATEGORY_CODE, PROCESS_CAT ORDER BY GEO_LOC DESC) AS RowNum FROM Account AC) WHERE RowNum = 1""" val acct_sel_df = sqlContext.sq
val sqlstr = """SELECT * FROM (
SELECT AC.*, ROW_NUMBER OVER (PARTITION BY ACCOUNT_TYPE, CATEGORY_CODE, PROCESS_CAT ORDER BY GEO_LOC DESC) AS RowNum FROM Account AC)
WHERE RowNum = 1"""
val acct_sel_df = sqlContext.sql(sqlstr)
运行Spark 2.1、Scala和Spark sql
上述语句将导致数据帧acct_sel_df。这
从帐户数据框(注册为
使用Account.createOrReplaceTempView(“Account”)
的临时视图
有没有办法在源数据框或结果数据框中指定分区?这样可以避免将数据移动到单个分区吗
通过查询源数据帧可以提前找到分区的数量。如果不这样做,会严重影响性能。您知道为什么按帐户类型、类别代码、进程类别划分的分区只不过是单个分区,它们之间是否有单个值?