【发布时间】:2017-07-31 04:27:59
【问题描述】:
我有一个表,其中包含一个名为 writer 的数组类型列,其中包含 array[value1, value2]、array[value2, value3].... 等值。
我正在做self join 以获得在数组之间具有共同值的结果。我试过了:
sqlContext.sql("SELECT R2.writer FROM table R1 JOIN table R2 ON R1.id != R2.id WHERE ARRAY_INTERSECTION(R1.writer, R2.writer)[0] is not null ")
和
sqlContext.sql("SELECT R2.writer FROM table R1 JOIN table R2 ON R1.id != R2.id WHERE ARRAY_INTERSECT(R1.writer, R2.writer)[0] is not null ")
但是遇到了同样的异常:
线程“主”org.apache.spark.sql.AnalysisException 中的异常: 未定义的函数:'ARRAY_INTERSECT'。该功能既不是 注册的临时函数或注册的永久函数 数据库'默认'。;第 1 行 pos 80
可能 Spark SQL 不支持ARRAY_INTERSECTION 和ARRAY_INTERSECT。如何在Spark SQL 中实现我的目标?
【问题讨论】:
标签: apache-spark apache-spark-sql spark-dataframe hiveql apache-spark-dataset