【发布时间】:2019-05-01 21:44:37
【问题描述】:
我使用spark-shell进行以下操作。
最近在 spark-sql 中加载了一个带有数组列的表。
这是相同的 DDL:
create table test_emp_arr{
dept_id string,
dept_nm string,
emp_details Array<string>
}
数据看起来像这样
+-------+-------+-------------------------------+
|dept_id|dept_nm| emp_details|
+-------+-------+-------------------------------+
| 10|Finance|[Jon, Snow, Castle, Black, Ned]|
| 20| IT| [Ned, is, no, more]|
+-------+-------+-------------------------------+
我可以像这样查询 emp_details 列:
sqlContext.sql("select emp_details[0] from emp_details").show
问题
我想查询集合中的一系列元素:
预期的查询工作
sqlContext.sql("select emp_details[0-2] from emp_details").show
或
sqlContext.sql("select emp_details[0:2] from emp_details").show
预期输出
+-------------------+
| emp_details|
+-------------------+
|[Jon, Snow, Castle]|
| [Ned, is, no]|
+-------------------+
在纯 Scala 中,如果我有一个数组:
val emp_details = Array("Jon","Snow","Castle","Black")
我可以使用
获取 0 到 2 范围内的元素emp_details.slice(0,3)
还给我
Array(Jon, Snow,Castle)
我无法在 spark-sql 中应用数组的上述操作。
谢谢
【问题讨论】:
标签: arrays scala apache-spark hive apache-spark-sql