簡體   English   中英

在java中閱讀Avro with Spark

[英]Read Avro with Spark in java

有人可以在spark中分享使用java閱讀avro的例子嗎? 找到scala示例但沒有運氣的java。 下面是代碼片段,它是代碼的一部分,但是ctx.newAPIHadoopFile方法的編譯問題。

JavaSparkContext ctx = new JavaSparkContext(sparkConf);
Configuration hadoopConf = new Configuration();
JavaRDD<SampleAvro> lines = ctx.newAPIHadoopFile(path, AvroInputFormat.class, AvroKey.class, NullWritable.class, new Configuration());

問候

您可以使用Databricksspark-avro連接器庫
從Spark SQL讀取或編寫Avro數據的推薦方法是使用Spark的DataFrame API。

連接器支持從Spark SQL讀取和寫入Avro數據:

import org.apache.spark.sql.*;

SQLContext sqlContext = new SQLContext(sc);

// Creates a DataFrame from a specified file
DataFrame df = sqlContext.read().format("com.databricks.spark.avro")
    .load("src/test/resources/episodes.avro");

// Saves the subset of the Avro records read in
df.filter($"age > 5").write()
    .format("com.databricks.spark.avro")
    .save("/tmp/output");

請注意,此連接器具有Spark 1.2,1.3和1.4+的不同版本:

Spark ver 連接器
1.2 0.2.0
1.3 1.0.0
1.4+ 2.0.1

使用Maven:

<dependency>
    <groupId>com.databricks</groupId>
    <artifactId>spark-avro_2.10</artifactId>
    <version>{AVRO_CONNECTOR_VERSION}</version>
</dependency>

請參閱以下內容: Spark SQL Avro Library

在這里,假設K是你的鑰匙而V是你的價值:

....

val job = new Job();

job.setInputFormatClass(AvroKeyValueInputFormat<K, V>.class);

FileInputFormat.addInputPaths(job, <inputPaths>);
AvroJob.setInputKeySchema(job, <keySchema>);
AvroJob.setInputValueSchema(job, <valueSchema>);

RDD<AvroKey<K>, AvroValue<V>> avroRDD = 
  sc.newAPIHadoopRDD(job.getConfiguration,
  AvroKeyValueInputFormat<<K>, <V>>,
  AvroKey<K>.class,
  AvroValue<V>.class);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM