1

pub サブトピックへのログ エクスポートを有効にしました。データフローを使用してこれらのログを処理し、関連する列を BigQuery に保存しています。誰かが pubsub メッセージ ペイロードをLogEntryオブジェクトに変換するのを手伝ってくれませんか。次のコードを試しました:

@ProcessElement
public void processElement(ProcessContext c) throws Exception {
    PubsubMessage pubsubMessage = c.element();

    ObjectMapper mapper = new ObjectMapper();

    byte[] payload = pubsubMessage.getPayload();
    String s = new String(payload, "UTF8");
    LogEntry logEntry = mapper.readValue(s, LogEntry.class);
}

しかし、次のエラーが発生しました。

com.fasterxml.jackson.databind.JsonMappingException: Can not find a (Map) Key deserializer for type [simple type, class com.google.protobuf.Descriptors$FieldDescriptor]

編集:次のコードを試しました:

try {
        ByteArrayInputStream stream = new ByteArrayInputStream(Base64.decodeBase64(pubsubMessage.getPayload()));
        LogEntry logEntry = LogEntry.parseDelimitedFrom(stream);
        System.out.println("Log Entry = " + logEntry);
    } catch (InvalidProtocolBufferException e) {
        e.printStackTrace();
    }

しかし、次のエラーが表示されます。

com.google.protobuf.InvalidProtocolBufferException: Protocol message end-group tag did not match expected tag

4

1 に答える 1