You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Ted Yu (JIRA)" <ji...@apache.org> on 2010/04/10 14:52:51 UTC
[jira] Commented: (HBASE-2432) enhance hbase.util.Bytes.toBytes()
with length limit
[ https://issues.apache.org/jira/browse/HBASE-2432?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12855551#action_12855551 ]
Ted Yu commented on HBASE-2432:
-------------------------------
Here is one implementation:
/**
* Converts a string to a UTF-8 byte array with limited length.
* @param s the string
* @param len the length limit
* @return the byte array
*/
public static byte[] toBytes(String s, int len) {
if (s == null) {
throw new IllegalArgumentException("string cannot be null");
}
if (len <= 0) {
throw new IllegalArgumentException("string length should be positive");
}
byte [] result = null;
byte [] ary = null;
try {
ary = s.getBytes(HConstants.UTF8_ENCODING);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (ary.length > len)
{
result = new byte[len];
System.arraycopy(ary, 0, result, 0, len);
}
else result = ary;
return result;
}
> enhance hbase.util.Bytes.toBytes() with length limit
> ----------------------------------------------------
>
> Key: HBASE-2432
> URL: https://issues.apache.org/jira/browse/HBASE-2432
> Project: Hadoop HBase
> Issue Type: Improvement
> Components: util
> Affects Versions: 0.20.1
> Reporter: Ted Yu
>
> The following stack trace is seen in our hadoop log:
> java.lang.IllegalArgumentException: Row > 32767
> at org.apache.hadoop.hbase.KeyValue.createByteArray(KeyValue.java:437)
> at org.apache.hadoop.hbase.KeyValue.(KeyValue.java:405)
> at org.apache.hadoop.hbase.KeyValue.(KeyValue.java:374)
> at org.apache.hadoop.hbase.KeyValue.(KeyValue.java:353)
> at org.apache.hadoop.hbase.client.Put.add(Put.java:137)
> at org.apache.hadoop.hbase.client.Put.add(Put.java:108)
> at org.apache.nutch.scoring.webgraph.ScoreUpdater$ScoreUpdaterReducer.reduce(ScoreUpdater.java:170)
> at org.apache.nutch.scoring.webgraph.ScoreUpdater$ScoreUpdaterReducer.reduce(ScoreUpdater.java:127)
> at org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174)
> at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:563)
> at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:408)
> at org.apache.hadoop.mapred.Child.main(Child.java:170)
> Bytes.toBytes(Float.valueOf(score).toString()) may return an array longer than 32767 bytes.
> We should enhance Bytes.toBytes() to include length limit:
> public static byte[] toBytes(String s, int length)
> String.getBytes() doesn't have length limit
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira