我有一個調度程序來獲取我們的集羣度量標準,並使用舊版本的Cloudera API將數據寫入HDFS文件。但最近,我們更新了我們的JAR和原始代碼錯誤,但有一個例外。以Apache Parquet格式寫入數據
java.lang.ClassCastException: org.apache.hadoop.io.ArrayWritable cannot be cast to org.apache.hadoop.hive.serde2.io.ParquetHiveRecord
at org.apache.hadoop.hive.ql.io.parquet.write.DataWritableWriteSupport.write(DataWritableWriteSupport.java:31)
at parquet.hadoop.InternalParquetRecordWriter.write(InternalParquetRecordWriter.java:116)
at parquet.hadoop.ParquetWriter.write(ParquetWriter.java:324)
我需要使用ParquetHiveRecord類寫在地板格式的數據(這是POJO)的幫助。
代碼示例如下: 「作家」(類型ParquetWriter的)的
Writable[] values = new Writable[20];
... // populate values with all values
ArrayWritable value = new ArrayWritable(Writable.class, values);
writer.write(value); // <-- Getting exception here
詳情:
MessageType schema = MessageTypeParser.parseMessageType(SCHEMA); // SCHEMA is a string with our schema definition
ParquetWriter<ArrayWritable> writer = new ParquetWriter<ArrayWritable>(fileName, new
DataWritableWriteSupport() {
@Override
public WriteContext init(Configuration conf) {
if (conf.get(DataWritableWriteSupport.PARQUET_HIVE_SCHEMA) == null)
conf.set(DataWritableWriteSupport.PARQUET_HIVE_SCHEMA, schema.toString());
}
});
而且,我們以前使用CDH和CM 5.5.1,現在用5.8。 3
謝謝!
沒有任何代碼,我們不能幫你。請提供您的源代碼 –
當然,用代碼示例更新了問題。 –