2016-12-23 30 views
0

我是hadoop和大數據技術的新手。我喜歡將鑲木地板文件轉換爲avro文件並讀取數據。我在幾個論壇搜索,並建議使用AvroParquetReader。如何將實木複合地板文件轉換爲Avro文件?

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

但我不確定如何包含AvroParquetReader。我不能 導入它。

我可以使用spark-shell讀取此文件,並可能將其轉換爲JSON ,然後可以將JSON轉換爲avro。但我正在尋找一個更簡單的解決方案 。

回答

1

如果您能夠使用Spark DataFrame,您將能夠在Apache Spark中本地讀取地板文件,例如, (Python中的僞代碼):

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

要保存的文件,你可以使用spark-avro星火包裝。要寫入數據框出來作爲Avro中,它會是這樣的:

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

不要忘記,你將需要包括spark-avro星火包裝的正確版本與你的星火集羣的版本(例如3.1.0-s2.11對應於spark-avro軟件包3.1,使用與默認Spark 2.0集羣匹配的Scala 2.11)。有關如何使用該軟件包的更多信息,請參閱https://spark-packages.org/package/databricks/spark-avro

一些常見的參考文獻包括:

  1. Spark SQL Programming Guide
  2. spark-avro星火包裝。
+0

OP特別要求一個比spark更簡單的解決方案(shell) – javadba

+0

或者OP要求比使用AvroParquetReader從Parquet到JSON再到JSON到Avro更簡單的解決方案。 –

+0

我明白你的看法,但如果你提到有關使用AvroParquetReader和/或Spark-shell從Parquet轉換爲Avro的上下文並以JSON爲中介的整個問題 - 那麼使用DataFrame從Parquet讀取並保存到Avro一個簡單的解決方案。我可以理解上下文,也許問題是如何在不使用Spark的情況下從Parquet轉換爲Avro。但是,由於這個問題被標記爲Apache-spark,我認爲使用Spark提供更簡單的解決方案並不合理。 –

相關問題