1

我想从 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

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

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

4

2 回答 2

0

这是我关联 spark-avro 依赖项的方式。此方法适用于将任何其他依赖项关联到 spark。

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

  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":[]}]

这不是唯一的方法。请参阅此链接了解更多详情。

于 2016-08-09T15:21:06.850 回答
0

另一种选择是将 --dependencies 选项添加到 spark-shell 或 spark submit(这是用于 spark 2.x)

--packages com.databricks:spark-avro_2.11:4.0.0

于 2018-12-03T22:54:33.773 回答