2016-06-19 1 views
1

Я пытаюсь подключиться к моему ведро s3 с помощью pyspark.
Ниже приведен код:PySpark - Подключиться к s3 - прочитать файл на rdd

from boto.s3.connection import S3Connection 

AWS_KEY = '...' 
AWS_SECRET = '...' 

aws_connection = S3Connection(AWS_KEY, AWS_SECRET) 
bucket = aws_connection.get_bucket('activitylogs-prod') 

sc._jsc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", AWS_KEY) 
sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", AWS_SECRET) 

print len(list(bucket.list())) 
for key in bucket.list(): 
    file_name = 's3n://myBucket/'+key.name 
    print file_name 
    rdd = sc.textFile(file_name 
     ,'org.apache.hadoop.mapred.TextInputFormat', 
     'org.apache.hadoop.io.Text', 
     'org.apache.hadoop.io.LongWritable' 
     ) 
    print rdd.count() 

Он бросает исключение, говоря:

textFile() takes at most 4 arguments (5 given) 

Ранее он использовал, чтобы бросить что-то вроде:

"s3n" not recognized 

Am использованием, Спарк 1.6 & Hadoop 2.6

Я проверил много потоков на SO, но ничего не работает в моем случае.

Любое предложение о том, как с этим бороться, очень ценится.

ответ

1

textFile только берет курс и minPartitions (опционально), я думаю, что вы ищете hadoopFile ... который принимает различные классы Format.

+0

Я попытался использовать hasoopFile, но он выбрасывает «Произошла ошибка при вызове z: org.apache.spark.api.python.PythonRDD.hadoopFile. : java.io.IOException: No FileSystem для схемы: s3n" –

+1

Это известная проблема с модульной модуляцией Hadoop -> https://issues.apache.org/jira/browse/SPARK-7442. Вам нужно включить соответствующие файлы и настройки, чтобы заставить это работать в Spark ... это просто не встроенный в –

Смежные вопросы