2016-11-08 2 views
4

하이브 테이블에서 열 목록을 검색하고 결과를 스파크 데이터 프레임에 저장하려고합니다.스파크 데이터 프레임/하이브 결과 집합 정렬

var my_column_list = hiveContext.sql(s""" SHOW COLUMNS IN $my_hive_table""") 

그러나 데이터 열이나 표시 열 쿼리의 결과를 사전 순으로 정렬 할 수 없습니다. 정렬 및 orderBy() 사용하여 시도했다.

어떻게 결과를 사전 순으로 정렬 할 수 있습니까?

업데이트 : 추가 내 코드의 샘플이 정렬 또는 해 orderBy 방법을 사용하는 방법을

import org.apache.spark.{ SparkConf, SparkContext } 
import org.apache.spark.sql.DataFrame 
import org.apache.spark.sql.hive.HiveContext 

val hiveContext = new HiveContext(sc) 
hiveContext.sql("USE my_test_db") 

var lv_column_list = hiveContext.sql(s""" SHOW COLUMNS IN MYTABLE""") 
//WARN LazyStruct: Extra bytes detected at the end of the row! Ignoring similar problems 

lv_column_list.show //Works fine 
lv_column_list.orderBy("result").show //Error arises 

답변

0

, 나는 'DESC'를 사용하고 "컬럼 이름"을 열 목록을 검색.

var lv_column_list = hiveContext.sql(s""" DESC MYTABLE""") 
lv_column_list.select("col_name").orderBy("col_name") 
0

확실하지,

가 다음을 시도,

df.sort(asc("column_name"))  
df.orderBy(asc("column_name")) 
+1

여기서 정렬은 문제가 아니며,'show columns' 명령의 결과와 관련이 있습니다. – cheseaux

3

SHOW COLUMNS 쿼리는 result 열이있는 Dataframe을 생성합니다. 이 열을 기준으로 주문하는 경우에, 당신은 당신이 원하는 것을 얻을 :

대신 'SHOW 항목'의
val df = hiveContext.sql(s""" SHOW COLUMNS IN $my_hive_table """) 
df.orderBy("result").show 
+0

예외가 발생했습니다 "org.apache.spark.sql.AnalysisException : 분석 결과 21 번 결과에서 속성 31이 누락되었습니다! [결과 # 31 ASC], 참;" – Amber

+0

사용한 코드를 볼 수 있습니까? – cheseaux

+0

질문에 코드 스 니펫을 추가했습니다. 쇼 열 부분을 실행하면 경고가 표시됩니다 (코드에 표시됨). 이것이 예외의 가능한 이유 일 수 있습니까? – Amber