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名前はタイムスタンプによって生成されるため、ディレクトリより下を指さなければなりません。