2016-07-11 3 views
1

'snappy'를 사용하여 압축 된 형식의 Kinesis 스트림 파일로 구성된 버킷이 S3에 제공됩니다. 폴더 구조 및 파일 형식은 s3://<mybucket>/yyyy/mm/dd/*.snappy입니다.내 pyspark 코드에서 S3의 Amazon kinesis 스트림 파일에 액세스하는 방법?

sqlContextpyspark으로 이것을 읽으려고합니다. 일반적으로 버킷을 다음과 같이 지정합니다.

df = sqlContext.read.json('s3://<mybucket>/inputfile.json') 

이러한 여러 부분 압축 파일을 데이터 프레임에 어떻게 가져 옵니까?

업데이트 :이 같은 구문을 사용하여 더 많은 발전을 한 것처럼 보입니다.

# 
# java.lang.OutOfMemoryError: Java heap space 
# -XX:OnOutOfMemoryError="kill %p 
kill -9 %p" 
# Executing /bin/sh -c "kill 6128 
kill -9 6128"... 

데이터의 크기가 큰 것이 아니라 어떻게 든이 압축 해제 단계는 설상가상으로 보인다 그러나, 힙 크기 문제로 실행. 처음 세 * 년대는 /yyyy/mm/dd/ 하위 폴더를 참조하는 경우

s3://<mybucket>/*/*/*/*.snappy 

: 모든 일/월/년에서 모든 물어 파일을 얻으려고 노력하는 경우

+0

이것은 서버 오류가 아닌 스택 오버플로에 속합니다. –

+0

흠 ... 잘 모르겠습니다. 이 물건을 처음 접했습니다. 투표를하지 않고 마이 그 레이션에 투표 할 수 있습니까? :) – Gopala

+1

@CharlieFish 이것은 [sf]에 정확히 속한 이유는 무엇입니까? 나에게 [so]에 대한 질문처럼 보입니다. –

답변

1

, 이런 일을하려고합니다.

testDirectories 폴더를 생성 ... 그리고 그 안에 어떤 날짜 폴더를 중첩 :

는 다음과 같은 테스트를 수행 할 수 있습니다,이 작품을 증명합니다.
nestedDirectories/ 
-- 2016/ 
-- -- 12/ 
-- -- -- 15/ 
-- -- -- -- data.txt 

data.txt 내부

:

hello 
world 
I 
Have 
Some 
Words 

그리고 나는 pyspark을 실행했습니다

>>> rdd = sc.readText("/path/to/nestedDirectories/*/*/*/*.txt") 
>>> rdd.count() 
6 

그래서, 그 별 패턴은 RDD로 파일을 가져 오기 위해 작동합니다.

여기에서 메모리와 물건에 문제가있는 경우 파일 크기가 너무 작은 파일이 너무 많을 수 있습니다. 이를 "작은 파일 문제"라고합니다. https://forums.databricks.com/questions/480/how-do-i-ingest-a-large-number-of-files-from-s3-my.html

+0

감사합니다. 이것은 매우 도움이됩니다. – Gopala

+0

나는 이것을 테스트했으며 계층 적 폴더 구조 (너무 많은 파일 무시)로 구성된 일반 텍스트 파일과 완벽하게 잘 작동합니다. 그러나 내가 압축 된 압축 파일을 가지고있을 때, 똑같은 코드가 데이터를 Spark에로드하지 못합니다 (이것은 EMR에서 기본 소프트웨어에서 사용할 수있는 멋진 코덱입니다). 무슨 일이 일어날 지 생각해? 나는이 '가까이에있다. :) – Gopala

관련 문제