为什么在使用可选的Null列查询镶木地板文件时,apache钻取返回Null指针异常?

时间:2015-04-13 14:08:37

标签: nullpointerexception protocol-buffers avro parquet apache-drill

我正在使用protobuf(或Avro)写作镶木地板文件。我的proto文件看起来像这样:

message Log  {
    optional string date = 1;
    optional string url = 2;
}

它是我的问题的简化版本。现在写入镶木地板文件(Non-hadoop)时,我希望有一个案例,其中一个列根本没有数据(我正在进行模式演变)。所以我只是在为' date'镶木地板文件中的列。文件已成功创建,但是当我尝试通过apache drill查询它时,它会抛出一个nullpointer异常。如果至少对于其中一个书面记录,我设置了“url'字段,然后它是好的,所有其他的' url' value可以为null,钻取可以查询它。但我需要在镶木地板文件中整个列为空(但其他镶木地板文件具有该列的值)的情况。请帮帮我们。 我的拼花版是:1.6.0rc7和apache钻版是0.8.0 这是代码:LogClass是从proto文件

编译的类
MessageType parquetSchema = new   ProtoSchemaConverter().convert(LogClass.Log.class);`

ProtoWriteSupport writeSupport = new  ProtoWriteSupport(LogClass.Log.class);

CompressionCodecName compressionCodecName = CompressionCodecName.SNAPPY;

int blockSize = 128 * 1024 * 1024;
int pageSize = 64 * 1024;

Path outputPath = new Path("./my.parquet");

ParquetWriter parquetWriter = new ParquetWriter(outputPath,    writeSupport, compressionCodecName, blockSize, pageSize);`

LogClass.Log.Builder log = LogClass.Log.newBuilder();
log.setUrl("www.x.com");

for (int i=0; i < 20; i++)
    parquetWriter.write(log);
parquetWriter.close();

0 个答案:

没有答案