Gobblinを使用して定期的に からリレーショナル データを抽出しOracle
、変換してavro
公開しています。HDFS
私のdfsディレクトリ構造は次のようになります
-tables
|
-t1
|
-2016080712345
|
-f1.avro
|
-2016070714345
|
-f2.avro
私はそれから次のように読み取ろうとしています:
val sq = sqlContext.read.format("com.databricks.spark.avro")
.load("/user/username/gobblin/job-output/tables/t1/")
実行するprintSchema
と、スキーマが正しく解釈されていることがわかります。
ただし、count
またはを実行するshow
と、DataFrames
が空になります。.avro
に変換して、ファイルが空でないことを確認しましたJSON
java -jar avro-tools-1.7.7.jar tojson --pretty t1/20160706230001_append/part.f1.avro > t1.json
ディレクトリ構造と関係があるのではないかと思います。おそらく、Spark avro ライブラリは、ルートから 1 レベル下の.avro
ファイルしか参照しません。ログは、t1 の下のディレクトリのみがドライバーにリストされたことを示しているようです。
16/07/07 10:47:09 INFO avro.AvroRelation: リスト hdfs://myhost.mydomain.com:8020/user/username/gobblin/job-output/tables/t1 ドライバー
16/07/07 10:47:09 INFO avro.AvroRelation: リスト hdfs://myhost.mydomain.com:8020/user/username/gobblin/job-output/tables/t1/20160706230001_append ドライバー
誰かが似たようなことを経験したことがありますか、またはこれを回避する方法を知っていますか? t1
名前はタイムスタンプによって生成されるため、ディレクトリより下を指さなければなりません。