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