Gobblin ( https://github.com/linkedin/gobblin/wiki )と呼ばれるテクノロジによってそこに置かれた HDFS からAVRO レコード ( https://avro.apache.org/ )を読み取る Java Spark アプリケーションを開発しようとしています。
サンプルの HDFS AVRO データ ファイル:
/gobblin/work/job-output/KAFKA/kafka-gobblin-hdfs-test/20150910213846_append/part.task_kafka-gobblin-hdfs-test_1441921123461_0.avro
残念ながら、Java で書かれた例は限られていることがわかりました。
- https://spark.apache.org/docs/1.3.1/quick-start.html
- https://spark.apache.org/docs/1.3.1/programming-guide.html
私が見つけた最高のものは、Scala で書かれています (Hadoop バージョン 1 ライブラリを使用)。
どんな助けでも大歓迎です。
現在、次のコードを使用することを考えていますが、AVRO データから値の HashMap を抽出する方法がわかりません。
JavaPairRDD avroRDD = sc.newAPIHadoopFile(
path,
AvroKeyInputFormat.class,
AvroKey.class,
NullWritable.class,
new Configuration() );
// JavaPairRDD avroRDD = sc.newAPIHadoopFile(
// path,
// AvroKeyValueInputFormat.class,
// AvroKey.class,
// AvroValue.class,
// new Configuration() );
私の現在の Maven の依存関係:
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro</artifactId>
<version>1.7.6</version>
</dependency>
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro-mapred</artifactId>
<version>1.7.6</version>
<classifier>hadoop2</classifier>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.4.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>