Я использую Gobblin периодически извлекать реляционные данные из Oracle
, преобразовать его в avro
и опубликовать его в HDFS
Spark - Avro читает схемы, но DataFrame Пустой
Моя структура каталогов ДФС выглядит как этот
-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
I C a видеть, что схема интерпретируется правильно.
Однако, когда я бегу count
или show
, DataFrames
пустые. Я проверил, что .avro
файлы не являются пустыми, преобразовав его в JSON
java -jar avro-tools-1.7.7.jar tojson --pretty t1/20160706230001_append/part.f1.avro > t1.json
Я подозреваю, что это может иметь что-то делать со структурой каталогов. Возможно, библиотеки Avro Spark выглядят только на одном уровне от корня для файлов .avro
. Бревна, кажется, указывают, что только каталоги в t1 были перечислены на водителя:
16/07/07 10:47:09 INFO avro.AvroRelation: Листинг HDFS: //myhost.mydomain.com: 8020/user/username/gobblin/job-output/tables/t1 on driver
16/07/07 10:47:09 INFO avro.AvroRelation: Listing hdfs: //myhost.mydomain.com: 8020/user/username/gobblin/job-output/tables/t1/20160706230001_append on driver
Кто-нибудь испытал что-то подобное или знает, как обойти это? Я бы хотел, чтобы точка была указана ниже, чем каталог t1
, потому что имена генерируются меткой времени.