2016-08-16 9 views
0

私はSpark 1.3.0を実行しており、パターンマッチングに基づいて多数のパーケットファイルを読みたいと思っています。寄木細工のファイルは、基本的にHive DBの基礎となるファイルであり、いくつかのファイルを(異なるフォルダ間で)読み込みたいだけです。私はメタファイルを無視し、日付フォルダ内のみ寄木細工のファイルをロードしたいパターンマッチングでSparkのパーケットファイルを読む

hdfs://myhost:8020/user/hive/warehouse/db/blogs/some/meta/files/ 
hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd=20160101/01/file1.parq   
hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd=20160101/02/file2.parq 
hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd=20160103/01/file3.parq 

何か

val v1 = sqlContext.parquetFile("hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd={[0-9]*}") 

のようなフォルダ構造があります。これは可能ですか?

答えて

0

あなたは(1.5上で動作しますが、1.3上でテストしていない)ので、のような寄木細工でワイルドカードを使用することができます。

val v1 = sqlContext.parquetFile("hdfs://myhost:8020/user/hive/warehouse/db/blogs/yymmdd*") 

あなたが動作しない場合に行うことができ、他のものはハイブを使用して外部表を作成することですyymmddでパーティションを指定し、そのテーブルからparquetを読み込みます。

val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc) 
sqlContext.sql("SELECT FROM ...") 

正規表現は使用できません。

また、フォルダ構造に問題があると思います。 hdfs:// myhost:8020/user/hive/warehouse/db/blogs/yymmdd = 150204/ または hdfs:// myhost:8020/user/hive/warehouse/db/blogs/yymmdd = 150204これは、 です。 /パート= 01 ない: HDFS:// myhostの:8020 /ユーザー/ハイブ/倉庫/ DB /ブログ/ YYMMDD = 1分の150204

あなたがそれを使用し、彼らは方法私はあなたが使用してトラブルを持っているだろうと思うので、ファイルが直接その下にないため、フォルダ名(yymmdd)はパーティションになります

関連する問題