我正在使用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
or时show
,它们DataFrames
是空的。我已通过将.avro
文件转换为JSON
java -jar avro-tools-1.7.7.jar tojson --pretty t1/20160706230001_append/part.f1.avro > t1.json
我怀疑它可能与目录结构有关。也许 Spark avro 库只从根目录向下一层查找.avro
文件。日志似乎表明驱动程序中仅列出了 t1 下的目录:
16/07/07 10:47:09 信息 avro.AvroRelation:在驱动程序上列出 hdfs://myhost.mydomain.com:8020/user/username/gobblin/job-output/tables/t1
16/07/07 10:47:09 信息 avro.AvroRelation:在驱动程序上列出 hdfs://myhost.mydomain.com:8020/user/username/gobblin/job-output/tables/t1/20160706230001_append
有没有人经历过类似的事情,或者知道如何解决这个问题?t1
因为名称是由时间戳生成的,所以我不得不指向低于目录的位置。