非常に大きなHiveテーブルのテキスト形式からORC形式に移行しようとしていますが、必要なストレージが少なくなり、クエリが高速になることを期待しています。私たちは資産全体で圧縮として LZO を使用しているので、ORC フォーマットにもそれを使用しようとしていました。
皆さんが提供できる助けに感謝します。
Hadoop 2.4.0 と Hive 0.13.1 を使用しています
以下のリンクによると、ORC 形式で LZO 圧縮を使用できるはずです。
http://2013.berlinbuzzwords.de/sessions/orc-file-improving-hive-data-storage https://hive.apache.org/javadocs/r1.1.0/api/ql/org/apache/hadoop/hive /ql/io/orc/package-summary.html
しかし、私が何かをするとき
create table sa_orc_lzo
stored as orc tblproperties ("orc.compress"="LZO")
as select * from sa;
以下のエラーが表示されます。
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row {"data".......}
at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:550)
at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.map(ExecMapper.java:177)
**Caused by: java.lang.IllegalArgumentException: LZO is not available.
at org.apache.hadoop.hive.ql.io.orc.WriterImpl.createCodec**(WriterImpl.java:200)
at org.apache.hadoop.hive.ql.io.orc.WriterImpl.<init>(WriterImpl.java:175)
at org.apache.hadoop.hive.ql.io.orc.OrcFile.createWriter(OrcFile.java:369)
at org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat$OrcRecordWriter.write(OrcOutputFormat.java:83)
at org.apache.hadoop.hive.ql.exec.FileSinkOperator.processOp(FileSinkOperator.java:649)
at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:793)
at org.apache.hadoop.hive.ql.exec.SelectOperator.processOp(SelectOperator.java:87)
at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:793)
at org.apache.hadoop.hive.ql.exec.TableScanOperator.processOp(TableScanOperator.java:92)
at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:793)
at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:540)
... 9 more
**Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.ql.io.orc.LzoCodec**