gpt4 book ai didi

hadoop - 使用 Flume Serializer 生成复合 hbase rowkey

转载 作者:可可西里 更新时间:2023-11-01 15:11:22 26 4
gpt4 key购买 nike

我有这样的 GIS 数据 -

'111, 2011-02-01 20:30:30, 116.50443, 40.00951'  
'111, 2011-02-01 20:30:31, 116.50443, 40.00951'
'112, 2011-02-01 20:30:30, 116.58197, 40.06665'
'112, 2011-02-01 20:30:31, 116.58197, 40.06665'

第一列是 driver_id ,第二个是 timestamp , 第三个是 longitude &第四个是latitude .

我正在使用 Flume 摄取此类数据,我的接收器是 HBase(类型 - AsyncHBaseSink)。
默认情况下,HBase 将 rowkey 分配为第一列(如 111)。我想创建一个复合行键(例如前两列 111_2011-02-01 20:30:30 的组合)。
我尝试将所需的更改放入 ' AsyncHbaseLogEventSerializer.java ' 但他们没有反射(reflect)出来。

请建议我该怎么做。

最佳答案

复合键应该在 AsyncHbaseSerializer 中工作

下面是示例代码片段。

在类级别声明privae List<PutRequest> puts = null;

 /**
* Method joinRowKeyContent. (with EMPTY string separation)
*
* Joiner is google guava class
* @param objArray Object...
*
* @return String
*/
public static String joinRowKeyContent(Object... objArray) {
return Joiner.on("").appendTo(new StringBuilder(), objArray).toString();
}

/**
* Method preParePutRequestForBody.
*
* @param rowKeyBytes
* @param timestamp
*/
private void preParePutRequest(final byte[] rowKeyBytes, final long timestamp) {
// Process

LOG.debug("Processing ..." + Bytes.toString(rowKeyBytes));

final PutRequest putreq = new PutRequest(table, rowKeyBytes, colFam, Bytes.toBytes("yourcolumn"), yourcolumnasBytearray, timestamp);
puts.add(putreq);
}

Your get actions method looks like...

  @Override
public List<PutRequest> getActions() {
//create rowkey like this
final String rowKey = joinRowKeyContent(driver_id, timestamp, longitude , latitude);

// call prepare put requests method here
final byte[] rowKeyBytes = Bytes.toBytes(rowKey);
puts.clear();
preParePutRequest(rowKeyBytes ,<timestamp>)
return puts;
}

关于hadoop - 使用 Flume Serializer 生成复合 hbase rowkey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37696145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com