2016-04-07 48 views
3

當試圖從s3讀取帶有火花的文件時,會出現異常。錯誤和代碼如下。該文件夾由hadoop的許多文件組成,稱爲part-00000 part-00001等。他們有一系列的文件大小從0KB到幾GB讀取s3存儲桶時出現錯誤火花

16/04/07 15時38分58秒INFO NativeS3FileSystem:打開鑰匙 'titlematching214/1.0/bypublicdemand /部分00000在 位置閱讀'0'16/04/07 15:38:58錯誤執行程序:0.0階段0.0(TID 0)中的任務0.0 中的異常org.apache.hadoop.fs.s3.S3Exception: org.jets3t.service.S3ServiceException:S3 GET失敗 '/titlematching214%2F1.0%2Fbypublicdemand%2Fpart-00000' XML錯誤 消息:InvalidRange的 請求範圍不是 satisfiablebytes = 0-01AED523DF401F17ECBYUH1h3WkC7/G8/EFE/YyHbzxoNTpRBiX6QMy2R XHur17lYTZXd7XxOWivmqIpu0F7Xx5zdWns =

object ReadMatches extends App{ 
    override def main(args: Array[String]): Unit = { 
    val config = new SparkConf().setAppName("RunAll").setMaster("local") 
    val sc = new SparkContext(config) 
    val hadoopConf = sc.hadoopConfiguration 
    hadoopConf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem") 
    hadoopConf.set("fs.file.impl", "org.apache.hadoop.fs.LocalFileSystem") 
    sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "myRealKeyId") 
    sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", "realKey") 
    val sqlConext = new SQLContext(sc) 

    val datset = sc.textFile("s3n://altvissparkoutput/titlematching214/1.0/*/*") 
    val ebayRaw = sqlConext.read.json(datset) 
    val data = ebayRaw.first(); 
    } 
} 
+0

請問您可以試試這個'sc.hadoopConfiguration.set(「mapreduce.input.fileinputformat.input.dir.recursive」,「true」)'。另外我相信s3n協議限制文件大小爲5GB。完全不確定這是否可能是問題,但... – evgenii

+0

沒有區別,相同的錯誤。 –

+0

你能解決這個錯誤嗎? – shrewquest

回答

0

可能是你可以直接從s3讀你的數據集。

val datset = "s3n://altvissparkoutput/titlematching214/1.0/*/*" 
    val ebayRaw = sqlConext.read.json(datset)