【问题标题】:AvroStorage schema_uri pointing to local file doesn't work指向本地文件的 AvroStorage schema_uri 不起作用
【发布时间】:2013-12-24 18:23:44
【问题描述】:

我正在像这样使用 AvroStorage:

STORE alias INTO '$OUTPUT'
    USING org.apache.pig.piggybank.storage.avro.AvroStorage('{
    "index" : 1,
    "schema_uri": "file://path/schema.avsc"}');

因此,从本地文件系统而不是 HDFS 获取 schema.avsc 是明确的。

它在伪分布式集群中工作,但在正常集群上失败,模式文件出现 java.io.FileNotFoundException 看起来这发生在后端。

我认为这是因为 AvroStorage 在一个节点上的后端调用,与我运行 pig 脚本的节点不同,无法在本地文件系统中找到该文件。 为什么它不能使用前端调用的模式文件? 这是否意味着我仅限于 schema_uri 的 HDFS 位置或使用在 AvroStorage 参数中嵌入架构字符串?

【问题讨论】:

    标签: hadoop apache-pig avro


    【解决方案1】:

    原来是 piggybank 的 AvroStorage 的一个限制: http://www.mail-archive.com/user%40pig.apache.org/msg09000.html

    现在我正在使用这个解决方法:

    %declare WORK_DIR `pwd`
    %declare SCHEMA_LITERAL `cat $WORK_DIR/schema.avsc`
    
    ...
    
    STORE inputs INTO 'output'
        USING com.magnetic.org.apache.pig.piggybank.storage.avro.AvroStorage('{
        "index" : 1,
        "schema": $SCHEMA_LITERAL}');
    

    【讨论】:

      猜你喜欢
      • 2017-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      • 2013-02-15
      • 2012-11-11
      • 2018-10-13
      • 1970-01-01
      相关资源
      最近更新 更多