2017-10-19 3 views
4

aws s3から寄木細工のデータを読み込む必要があります。私はこのためにAWS SDKを使用している場合、私は次のように入力ストリームを取得することができますAWS s3バケットから寄せ木細工のデータを読み込む

S3Object object = s3Client.getObject(new GetObjectRequest(bucketName, bucketKey)); 
InputStream inputStream = object.getObjectContent(); 

しかし、Apacheの寄木細工の読者は、このような唯一のローカルファイルを使用しています。

ParquetReader<Group> reader = 
        ParquetReader.builder(new GroupReadSupport(), new Path(file.getAbsolutePath())) 
          .withConf(conf) 
          .build(); 
reader.read() 

は、だから私はどのように解析された入力ストリームを知りません寄せ木張りのファイル。 たとえば、csvファイルの場合、inputstreamを使用するCSVParserがあります。

私はこの目標のためにsparkを使用する解決策を知っています。このよう :

SparkSession spark = SparkSession 
       .builder() 
       .getOrCreate(); 
Dataset<Row> ds = spark.read().parquet("s3a://bucketName/file.parquet"); 

しかし、私は火花を使用することはできません。

誰も私にs3から寄木細工のデータを読むための解決策を教えてもらえますか?

答えて

0
String SCHEMA_TEMPLATE = "{" + 
         "\"type\": \"record\",\n" + 
         " \"name\": \"schema\",\n" + 
         " \"fields\": [\n" + 
         "  {\"name\": \"timeStamp\", \"type\": \"string\"},\n" + 
         "  {\"name\": \"temperature\", \"type\": \"double\"},\n" + 
         "  {\"name\": \"pressure\", \"type\": \"double\"}\n" + 
         " ]" + 
         "}"; 
String PATH_SCHEMA = "s3a"; 
Path internalPath = new Path(PATH_SCHEMA, bucketName, folderName); 
Schema schema = new Schema.Parser().parse(SCHEMA_TEMPLATE); 
Configuration configuration = new Configuration(); 
AvroReadSupport.setRequestedProjection(configuration, schema); 
ParquetReader<GenericRecord> = AvroParquetReader.GenericRecord>builder(internalPath).withConf(configuration).build(); 
GenericRecord genericRecord = parquetReader.read(); 

while(genericRecord != null) { 
     Map<String, String> valuesMap = new HashMap<>(); 
     genericRecord.getSchema().getFields().forEach(field -> valuesMap.put(field.name(), genericRecord.get(field.name()).toString())); 

     genericRecord = parquetReader.read(); 
} 

のGradleは

compile 'com.amazonaws:aws-java-sdk:1.11.213' 
    compile 'org.apache.parquet:parquet-avro:1.9.0' 
    compile 'org.apache.parquet:parquet-hadoop:1.9.0' 
    compile 'org.apache.hadoop:hadoop-common:2.8.1' 
    compile 'org.apache.hadoop:hadoop-aws:2.8.1' 
    compile 'org.apache.hadoop:hadoop-client:2.8.1' 
の依存関係します
関連する問題