[ 
https://issues.apache.org/jira/browse/AVRO-1208?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13569215#comment-13569215
 ] 

Yin Huai commented on AVRO-1208:
--------------------------------

Did a quick test with [my benchmark 
tool|https://github.com/yhuai/tableplacement.git], using the table described at 
[here|https://github.com/yhuai/tableplacement/blob/AVRO-1208/tableplacement-experiment/tableProperties/LazyBinaryColumnarSerDe/t0.4-singleFile-noColumnGroup.properties].
 Without prefetching, the throughput is about 70 MiB/s. By prefetching 16 
blocks (reading 17 blocks at a time), the throughput is about 82 Mib/s.

My system info: 
OS: Ubuntu 12.04 with kernel 3.2.0-37.
Java: 1.6.0_24
Disk: WD RE4 WD1003FBYX 1TB 7200 RPM

To play with the patch. 
1) install avro applied with this patch to your local maven repo
2) checkout branch AVRO-1208 from the tool linked above and build it with 
{code}mvn clean package -DskipTests -P avro-1.7.4{\code}
3) in tableplacement-experiment/expScripts/exp0.6.conf, modify the path of data 
generated by the benchmark ("DIR") and the device you are using ("DEVICE")
4) in tableplacement-experiment/expScripts/expConf, use {code}sudo 
./exp.write.Trevni.sh exp0.6{\code} to generate data
5) in tableplacement-experiment/expScripts/expConf, use {code}sudo 
./exp.strace.read.Trevni.sh exp0.6 <io buffer size> cfg1:all <dir of strace> 
<num of prefetched blocks>{\code} to do the test. <io buffer size> does not 
matter at here since I am using InputFile. <dir of strace> is the location to 
store the results of strace.
                
> Improve Trevni's performance on row-oriented data access
> --------------------------------------------------------
>
>                 Key: AVRO-1208
>                 URL: https://issues.apache.org/jira/browse/AVRO-1208
>             Project: Avro
>          Issue Type: Improvement
>    Affects Versions: 1.7.3
>            Reporter: Yin Huai
>         Attachments: AVRO-1208.1.patch
>
>
> Trevni uses an 64KB internal buffer to store values of a column. When 
> accessing a column, it reads 64KB (if we do not consider compression and 
> checksum) data from the storage layer. However, when the table is accessed in 
> a row-oriented fashion (a entire row needs to be handed over to the upper 
> layer), in the worst case (a full table scan and values of this table are all 
> the same size), every 64KB data read can cause a seek.
> This jira is used to discuss if we should consider the data access pattern 
> mentioned above and if so, how to improve the performance of Trevni. 
> Row-oriented data processing engines, e.g. Hive, can benefit from this work.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to