私は拡張ハイブテーブルを作成します:
CREATE EXTERNAL TABLE hivelog (timestamp BIGINT ,value STRING)
PARTITIONED BY(dt BIGINT) row format serde
"hive.serde.AdsClickLogWritableDeserializer" stored as inputformat
"org.apache.hadoop.mapred.SequenceFileInputFormat" outputformat
"org.apache.hadoop.mapred.SequenceFileOutputFormat" location
"/user/hive/HiveData";
hive.serde.AdsClickLogWritableDeserializer is my class deserialized data.
私はクエリを実行します
select count(*) from hivelog that has error:
2013-04-22 22:30:51,228 FATAL org.apache.hadoop.mapred.Child: Error running child : java.lang.OutOfMemoryError: Java heap space
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.<init>(MapTask.java:949)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:428)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:372)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.mapred.Child.main(Child.java:249)
私のハイブのバージョンは0.90であり、hadoopのバージョンは1.0.0です
これを修正する方法。本当にありがとう。
回答:
回答№1は0OutOfMemoryErrorを処理するためにJVMメモリ設定を増やそう
[JVMメモリを増やすにはどうしたらよいですか?] [1]と[メモリ不足エラー時のJVMの動作?] [2] [1]を参照してください。 JVMのメモリを増やすにはどうすればいいですか? [2]: メモリ不足エラー時のJVMの動作?リストs =新しいArrayList <String>();