2017-01-30 6 views
1

ロードしようとしているs3に数百のgzipされたcsvファイルがあります。ディレクトリ構造は、次のようになります。SparkでS3からネストされたcsvファイルをロードする

bucket 
-- level1 
---- level2.1 
-------- level3.1 
------------ many files 
-------- level3.2 
------------ many files 
---- level2.2 
-------- level3.1 
------------ many files 
-------- level3.2 
------------ many files 

複数のlevel2、level3ディレクトリ、および複数のファイルがそれぞれ存在する可能性があります。過去に私が.textFileを使用してデータをロードするなどのワイルドカード使用してパスを渡した:すべての子のパスの下にあるすべてのファイルをロードするためにうまく働いた

s3a://bucketname/level1/** 

を。私は今、スパーク2でCSVローディング機構を使用しようとしていますし、私は次のエラーを取得しておいてください。

java.lang.IllegalArgumentException: Can not create a Path from an empty string 
at org.apache.hadoop.fs.Path.checkPathArg(Path.java:126) 
at org.apache.hadoop.fs.Path.<init>(Path.java:134) 
at org.apache.hadoop.util.StringUtils.stringToPath(StringUtils.java:245) 
at org.apache.hadoop.mapred.FileInputFormat.setInputPaths(FileInputFormat.java:377) 
at org.apache.spark.SparkContext$$anonfun$hadoopFile$1$$anonfun$30.apply(SparkContext.scala:1014) 
at org.apache.spark.SparkContext$$anonfun$hadoopFile$1$$anonfun$30.apply(SparkContext.scala:1014) 
at org.apache.spark.rdd.HadoopRDD$$anonfun$getJobConf$6.apply(HadoopRDD.scala:179) 
at org.apache.spark.rdd.HadoopRDD$$anonfun$getJobConf$6.apply(HadoopRDD.scala:179) 
at scala.Option.foreach(Option.scala:257) 

私は、次のパスを使用して試してみました:

  1. S3A:// bucketname /レベル1 /を**
  2. S3A:// bucketname /レベル1/
  3. S3A:// bucketname/LEVEL1

同じエラーのすべての結果。私がs3a://bucketname/level1/level2.1/level3.1/を使用して、その1つのディレクトリの下にあるすべてのファイルを読み込みますが、上位のディレクトリを使用しようとすると失敗します。

ロードするための私のコードは次のとおりです。

Dataset<Row> csv = sparkSession.read() 
      .option("delimiter", parseSettings.getDelimiter().toString()) 
      .option("quote", parseSettings.getQuote()) 
      .csv(path); 

私が使用したCSVファイルの読み込みは、通常のファイルの解像度戦略を火花が、動作はテキストファイルを使用して異なるように思える、すべてのロードを達成するための方法がありますが、 csv形式のファイルですか?

おかげで、
ネイサン

+0

同じ問題を動作します:ローカルでコードを実行しているファイルを使用して、私のローカルファイルシステムに逆行して –

答えて

0

は怪しいバグのように聞こえます。

意味:issue.apache.orgでエラーメッセージとスタックトレースを検索します。 FWIW、それはSPARK-15473とすることができる。そこにまだ&がない場合は、スタックに追加してください。そうでない場合は、新しいものを追加します。

最初に:それをs3入力から切り離してください。 file:// URLを使用してレプリケートしてみてください。これは、正しいコードに責任があることを指摘するのに役立ちます。また

、回避策時間。 databricks CSVリーダーはまだ

+0

「空の文字列からのパスを作成できません」://が正常に動作します。私は、JIRAの項目を見てみましょう。 –

関連する問題