2017-09-22 3 views
1

ライブラリ( 、org.apache.avro.Schemaおよびorg.apache.parquet.hadoop)を使用して寄木細工ファイルを作成するJava(1.8)ベースのアプリケーションを使用しています。 ParquetWriterなど。寄木張りのファイルで日付型の列を作成する方法

これは私のサンプルコード

最終列のschemaLocation = ParquerWriterImpl.class.getClassLoader()のgetResource( "寄木細工スキーマ/" + ParquetTypes.RISKINFO.getFileType())。ある、getPath()であります;

 Schema avroSchema = new Schema.Parser().parse(new File(schemaLocation)); 

     final MessageType parquetSchema = new AvroSchemaConverter().convert(avroSchema); 
     final WriteSupport<Mapper> writeSupport = new AvroWriteSupport(parquetSchema, avroSchema); 
     final String parquetPath = PropertyLoader.getPropertyLoader().getProperty(Constants.PROPERTY_MACHINE_FOLDERPATH) + "/" + 
       parquetFileName; 
     final Path path = new Path(parquetPath); 
     ParquetWriter<GenericRecord> parquetWriter = new ParquetWriter(path, writeSupport, CompressionCodecName.SNAPPY, BLOCK_SIZE, 1024); 
     final GenericRecord record = new GenericData.Record(avroSchema); 
     parquetWriter.write(function.apply(new RiskInfoGen(record))); 
     parquetWriter.close(); 

このファイルを作成するには、以下のようなAvroスキーマを使用しています。

}, 
    { 
    "name": "additional", 
    "type": {"type": "map", "values": "string","default" : null} 

    }, 

    { 
    "name": "mydate", 
    "type": {"type": "int", "logicalType" : "date"} 

    } 

(POJOクラス)Javaのint型に "mydate"をマッピングしています。

質問1私はここで寄木細工のファイルを取得していますが、sparkでそのファイルを開いた後、 "mydate"の列がint型として表示されます。

私は寄木細工のスキーマ内の日付列として、この「MyDateに該当する」ようにする方法を教えてください。

たとえば、mydate date(nullable true)

答えて

0

私は同じ問題がありました。

{"name": "birth_date", "type": [{"type": "int", "logicalType" : "date"}, "null"]}" 

そして、私のように値を設定します:

record.put("birth_date", 1); 

そして中1970年1月2日として、それが現れる私は私のためにそれを固定1.9.0への切り替えParquet-Avro 1.8.1

を使用していましたapacheはデータフレームを起動します。

関連する問題