【发布时间】:2016-11-12 16:33:03
【问题描述】:
我正在尝试在启动 spark-shell 时包含 spark-avro 包,按照此处提到的说明:https://github.com/databricks/spark-avro#with-spark-shell-or-spark-submit。
spark-shell --packages com.databricks:spark-avro_2.10:2.0.1
我的意图是使用包中的 SchemaConverter 类将 avro 模式转换为 spark 模式类型。
导入 com.databricks.spark.avro._ ... //colListDel 是来自 avsc 的字段列表,由于某些功能原因,这些字段将被删除。
for( field <- colListDel){
println(SchemaConverters.toSqlType(field.schema()).dataType);
}
...
在执行上述 for 循环时,出现以下错误:
<console>:47: error: object SchemaConverters in package avro cannot be accessed in package com.databricks.spark.avro
println(SchemaConverters.toSqlType(field.schema()).dataType);
如果我缺少任何东西,请提出建议,或者让我知道如何在我的 scala 代码中包含 SchemaConverter。
以下是我的 envt 详细信息: Spark 版本:1.6.0 Cloudera 虚拟机 5.7
谢谢!
【问题讨论】:
-
你有没有想过这个问题?我遇到了同样的错误。
-
解决方法:一旦 package 命令被执行,它会下载一些隐藏文件夹中的 jars:.ivy2/jars 文件夹。我在类路径中使用了这些 jar,并编写了 scala 自定义代码以使用包库中的类。似乎内部 schemaconverter 是一个私有成员,如果您需要自定义它,请检查所需的许可条款。让我知道这是否有帮助。
-
可能 2.0.1 不是从最近的 2.0 分支构建的。我注意到这个类曾经是私有的:github.com/databricks/spark-avro/blob/branch-1.0/src/main/scala/…
-
我使用的是 Spark 1.4.1,我尝试了代码
val sField = new StructField(f.name,SchemaConverters.toSqlType(f.schema()).dataType,false),我发现了下面的error: Spark symbol SchemaConverters is not accessible from this place你找到旧版本的解决方案了吗?我的工作场所仅限于 1.4.1 版
标签: apache-spark avro databricks