2016-12-12 1 views
1

tail function과 같은 것을 사용하여 아래 데이터 프레임의 마지막 50 행을 arrange 또는 collect없이 스파크 릴을 사용하는 행 범위별로 인쇄하고 싶습니다. 일부 프레임은 다음과 같습니다. 대형이며 연속 열이 없습니다.Spark DataFrame의 마지막 행

library(sparklyr) 
library(dplyr) 
library(Lahman) 

spark_install(version = "2.0.0") 
sc <- spark_connect(master = "local") 

batting_tbl <- copy_to(sc, Lahman::Batting, "batting"); batting_tbl 
batting_tbl %>% count # Number of rows 
    # n 
    # <dbl> 
    # 1 101332 

batting_tbl %>% tail(., n = 50) 
# Error: tail() is not supported by sql sources 
+0

호출하기 전에 최종 분류 data.frame 이름없는 이유 꼬리? 'tail (namedData, n = 50)' – CCurtis

+0

당신의 제안은 인덱스별로 정렬 한 다음 Spark DataFrame에서 머리를 맞출 때 사용할 수 있습니다. – eyeOfTheStorm

답변

2

여기 하나 개의 솔루션 (반환 분류되지 않은 꼬리)이다 :

tbl_df(batting_tbl) %>% slice(101282:101332) # Prints the last 50 rows 

여기에 두 번째 솔루션 (필터 지수)입니다 :

tbl_df(batting_tbl) %>% arrange(-as.numeric(rownames(.))) %>% head(., n = 50) 

이 ** 참고 : 위의 모두 tbl_df을 필요로가, batting_tbl %>% head(., n = 50)은 R data.frame으로 수집 할 필요가 없으며 계산하는 데 시간이 덜 소요되는 경향이 있습니다. monotonically_increasing_id() 또는 비슷한 것을 지적하는 @ user6910411 덕분에 collect()에 의해 반환 된 R data.frame 대신 스파크 데이터 프레임이 반환됩니다.

이 꼬리 (또는 가까운) 먼저 인쇄 마지막 인덱스 값을 반환 및 R의 data.frame에 수집을 방지 :

sdf_with_unique_id(batting_tbl, id = "id") %>% arrange(-id) # Id column for sorting 
관련 문제