Spark SQL은 맵, 배열 등 데이터 프레임에 저장된 복합 유형 쿼리를 지원합니다. 이 가이드에서는 중첩된 데이터 구조에 액세스하고 조작하기 위한 구문과 방법을 간략하게 설명합니다.
<code>df.select($"arrayColumn".getItem(index)).show</code>
여기서 index는 배열에서 필요한 요소의 위치를 나타냅니다.
<code>sqlContext.sql("SELECT arrayColumn[index] FROM df").show</code>
<code>val get_ith = udf((xs: Seq[Int], i: Int) => Try(xs(i)).toOption) df.select(get_ith($"arrayColumn", lit(index))).show</code>
Spark 2.4에는 배열 작업에 사용할 수 있는 필터, 변환, 집계 및 array_* 함수와 같은 내장 함수가 도입되었습니다.
<code>df.selectExpr("filter(arrayColumn, x -> x % 2 == 0) arrayColumn_even").show</code>
<code>df.selectExpr("transform(arrayColumn, x -> x + 1) arrayColumn_inc").show</code>
<code>df.selectExpr("aggregate(arrayColumn, 0, (acc, x) -> acc + x, acc -> acc) arrayColumn_sum").show</code>
<code>df.select($"mapColumn".getField("key")).show</code>
여기서 key는 맵에 필요한 키의 이름을 나타냅니다.
<code>sqlContext.sql("SELECT mapColumn['key'] FROM df").show</code>
<code>df.select($"mapColumn.key").show</code>
<code>val get_field = udf((kvs: Map[String, String], k: String) => kvs.get(k)) df.select(get_field($"mapColumn", lit("key"))).show</code>
<code>df.select($"structColumn.field").show</code>
그 중 field는 구조 내 필수 필드의 이름을 나타냅니다.
중첩 구조 배열의 필드는 도트 구문, 필드 이름 및 열 메서드의 조합을 사용하여 액세스할 수 있습니다.
<code>df.select($"nestedArrayColumn.foo").show</code>
<code>df.select($"nestedArrayColumn.vals".getItem(index).getItem(innerIndex)).show</code>
위 내용은 중첩된 데이터 구조(맵, 배열, 구조체)를 사용하여 Spark SQL DataFrame을 쿼리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!