2

我是 hadoop 和大数据技术的新手。我喜欢将 parquet 文件转换为 avro 文件并读取该数据。我在几个论坛中搜索,它建议使用 AvroParquetReader。

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

但我不确定如何包含 AvroParquetReader。我根本无法导入它。

我可以使用 spark-shell 读取此文件,并可能将其转换为一些 JSON,然后可以将 JSON 转换为 avro。但我正在寻找一个更简单的解决方案。

4

1 回答 1

4

如果您能够使用 Spark DataFrames,您将能够在 Apache Spark 中本地读取 parquet 文件,例如(在 Python 伪代码中):

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

要保存文件,您可以使用spark-avroSpark 包。要将 DataFrame 作为 avro 写出,它类似于:

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

不要忘记,您需要在spark-avro您的 Spark 集群版本中包含正确版本的 Spark 包(例如,3.1.0-s2.11 对应于spark-avro使用 Scala 2.11 的包 3.1,它与默认的 Spark 2.0 集群匹配)。有关如何使用包的更多信息,请参阅https://spark-packages.org/package/databricks/spark-avro

一些方便的参考资料包括:

  1. Spark SQL 编程指南
  2. spark-avro火花包。
于 2016-12-23T07:26:32.760 回答