2
나는 수 억 개의 레코드가있는 큰 데이터 프레임을 가지고 있습니다. 나는 단지 그것을 읽는 동안 df를 필터링 할 정도로 오직 df의 10 %만을 원한다. 필터 조건은 동적이며 한 실험에서 다른 실험으로 변경됩니다.[] 형식의 목록을() 형식으로 변환하는 방법
filter = "filter_condition in" + tuple(df1.select("xxx").rdd.flatMap(lambda x: x).collect())
위의 조각이 목록은 예를 들어 내가 큰 파일을 읽을 수 아래의 쿼리를 사용하고 [1]
말할 수 있습니다 :있는 내가 필터 값을 얻고 다른 DF가있다
: 튜플 1 개 이상의 요소가있는 경우
large_df = (sqlContext.read.parquet(path).filter(filter))
쿼리는 잘 작동하지만, 필터 조건은 1 값을 가질 때 다음 튜플로 나온다 (1) 또는 (10,293) 등을 필터 조건
(sqlContext.read.parquet(path).filter("filter_condition in (1,)"))
나옵니다 때문에 큰 DF를 판독하는 동안이 오류가 발생리스트를 변환하는 방법이있다 [1] (1) 체재. 감사합니다
덕분에 많이. 귀하의 접근 방식이 효과적입니다. 도움을 감사하십시오. – Yuvaraj