将spark-avro jar引导至Amazon EMR集群

时间:2016-08-01 16:22:54

标签: amazon-web-services amazon-emr spark-avro

我想从Zeppelin笔记本中读取位于Amazon S3中的avro文件。我知道Databricks有一个很棒的包spark-avro。为了将这个jar文件引导到我的集群并使其工作,我需要采取哪些步骤?

当我在笔记本上写这篇文章时, val df = sqlContext.read.avro("s3n://path_to_avro_files_in_one_bucket/")

我收到以下错误 - <console>:34: error: value avro is not a member of org.apache.spark.sql.DataFrameReader

我看过this。我想那里发布的解决方案不适用于最新版本的Amazon EMR。

如果有人能给我指点,那真的会有所帮助。

2 个答案:

答案 0 :(得分:0)

以下是我如何关联spark-avro依赖项。此方法适用于将任何其他依赖项与spark相关联。

  1. 确保您的火花版本与您的spark-avro兼容。您将找到依赖项的详细信息here

  2. 我将spark-avro文件放入S3存储桶中。您可以使用hdfs或任何其他商店。

  3. 启动EMR集群时,在配置中添加以下JSON, [{"classification":"spark-defaults", "properties":{"spark.files":"/path_to_spark-avro_jar_file", "spark.jars":"/path_to_spark-avro_jar_file"}, "configurations":[]}]

  4. 这不是唯一的方法。有关详细信息,请参阅此link

答案 1 :(得分:0)

另一种选择是将--dependencies选项添加到spark-shell或spark提交(这是针对spark 2.x的)

  

-打包com.databricks:spark-avro_2.11:4.0.0