2016-12-23 7 views
0

Я новичок в hadoop и Big data Technologies. Мне нравится конвертировать файл паркета в файл avro и читать эти данные. Я ищу на нескольких форумах и предложил использовать AvroParquetReader.Как преобразовать файл паркета в файл Avro?

AvroParquetReader<GenericRecord> reader = new AvroParquetReader<GenericRecord>(file); 
GenericRecord nextRecord = reader.read(); 

Но я не уверен, как включить AvroParquetReader. Я не могу импортировать его вообще.

Я могу прочитать этот файл, используя искровую оболочку, и может преобразовать его в JSON , а затем JSON можно преобразовать в avro. Но я ищу более простое решение для .

ответ

1

Если вы можете использовать Spark DataFrames, вы сможете прочитать файлы паркета изначально в Apache Spark, например. (В Python псевдокоде):

df = spark.read.parquet(...) 

Чтобы сохранить файлы, вы можете использовать spark-avro Спарк пакет. Для того, чтобы написать DataFrame из как AVRO, это было бы что-то вроде:

df.write.format("com.databricks.spark.avro").save("...")

Не забывайте, что вам нужно будет включать в себя правильную версию spark-avro Спарк пакет с вашей версией искру кластера (например, 3.1.0-s2.11 соответствует пакету spark-avro 3.1 с использованием Scala 2.11, который соответствует кластеру Spark 2.0 по умолчанию). Для получения дополнительной информации о том, как использовать пакет, см. https://spark-packages.org/package/databricks/spark-avro.

Некоторые удобные ссылки включают:

  1. Spark SQL Programming Guide
  2. spark-avro Спарк пакет.
+0

OP специально задает более простое решение, чем искра (оболочка). – javadba

+0

Или OP просит более простое решение, чем использование AvroParquetReader для перехода от Parquet к JSON, а затем JSON в Avro. –

+0

Я понимаю ваше дело, но если вы сослались на весь вопрос об использовании AvroParquetReader и/или в контексте преобразования Spark-shell из Parquet в Avro с JSON в качестве посредника, то с использованием DataFrames для чтения из Parquet и сохранения в Avro более простое решение. Я могу понять контекст, что, возможно, вопрос заключается в том, как конвертировать из Parquet в Avro без использования Spark. Но поскольку этот вопрос отмечен Apache-искрами, я не думаю, что было бы необоснованным предоставить более простое решение, используя Spark. –