I was researching my ATLAS-381 errors and came across possibly a more 
fundamental problem.  My avro tables define their schema by reference to a 
schema file on HDFS.  The DDL includes:

TBLPROPERTIES 
('avro.schema.url'='hdfs://redstackambari.vagrant.tgt:8020/user/vagrant/schema/foo.avsc');

When the bridge tries to read that schema I get the error below.  The fact that 
AvroSerdeUtils is calling java.net.URL() with the hdfs://... string means that 
it could find load the schema directly:

https://github.com/apache/hive/blob/branch-1.2/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroSerdeUtils.java#L115

>From past experiences, I would guess that the attempt to get the HDFS file 
>system here isn't working due to kerberos authentication issues:
https://github.com/apache/hive/blob/branch-1.2/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroSerdeUtils.java#L131

I am trying to debug this further, but does anyone have other thoughts on why I 
may be getting this error?

Thanks! -Aaron


org.apache.hadoop.hive.serde2.avro.AvroSerdeException: Unable to read schema 
from given path: 
hdfs://redstackambari.vagrant.tgt:8020/user/vagrant/schema/foo.avsc
        at 
org.apache.hadoop.hive.serde2.avro.AvroSerdeUtils.determineSchemaOrThrowException(AvroSerdeUtils.java:119)
        at 
org.apache.hadoop.hive.serde2.avro.AvroSerDe.determineSchemaOrReturnErrorSchema(AvroSerDe.java:167)
        at 
org.apache.hadoop.hive.serde2.avro.AvroSerDe.initialize(AvroSerDe.java:103)
        at 
org.apache.hadoop.hive.serde2.avro.AvroSerDe.initialize(AvroSerDe.java:80)
        at 
org.apache.hadoop.hive.serde2.SerDeUtils.initializeSerDe(SerDeUtils.java:521)
        at 
org.apache.hadoop.hive.metastore.MetaStoreUtils.getDeserializer(MetaStoreUtils.java:391)
        at 
org.apache.hadoop.hive.ql.metadata.Table.getDeserializerFromMetaStore(Table.java:276)
        at 
org.apache.hadoop.hive.ql.metadata.Table.getDeserializer(Table.java:258)
        at org.apache.hadoop.hive.ql.metadata.Table.getCols(Table.java:605)
        at 
org.apache.atlas.hive.bridge.HiveMetaStoreBridge.createTableInstance(HiveMetaStoreBridge.java:271)
        at 
org.apache.atlas.hive.bridge.HiveMetaStoreBridge.registerTable(HiveMetaStoreBridge.java:302)
        at 
org.apache.atlas.hive.bridge.HiveMetaStoreBridge.importTables(HiveMetaStoreBridge.java:217)
        at 
org.apache.atlas.hive.bridge.HiveMetaStoreBridge.importDatabases(HiveMetaStoreBridge.java:105)
        at 
org.apache.atlas.hive.bridge.HiveMetaStoreBridge.importHiveMetadata(HiveMetaStoreBridge.java:97)
        at 
org.apache.atlas.hive.bridge.HiveMetaStoreBridge.main(HiveMetaStoreBridge.java:508)
Caused by: java.net.MalformedURLException: unknown protocol: hdfs
        at java.net.URL.<init>(URL.java:592)
        at java.net.URL.<init>(URL.java:482)
        at java.net.URL.<init>(URL.java:431)
        at 
org.apache.hadoop.hive.serde2.avro.AvroSerdeUtils.determineSchemaOrThrowException(AvroSerdeUtils.java:115)
        ... 14 more


Reply via email to