spark-avro 数据块包
spark-avro databricks package
我正在尝试在启动 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 class 将 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。
以下是我的环境详情:
星火版本:1.6.0
Cloudera VM 5.7
谢谢!
这个对象和提到的方法曾经是私有的。请查看 1.0 版本的源代码:
private object SchemaConverters {
case class SchemaType(dataType: DataType, nullable: Boolean)
/**
* This function takes an avro schema and returns a sql schema.
*/
private[avro] def toSqlType(avroSchema: Schema): SchemaType = {
avroSchema.getType match {
...
您正在下载 2.0.1 版本,它可能不是从最新的 2.0 分支构建的。
我检查了3.0版本,这个class和方法现在是public。
这应该可以解决您的问题:
spark-shell --packages com.databricks:spark-avro_2.10:3.0.0
编辑:在评论后添加
spark-avro 3.0.0 库需要 Spark 2.0,因此您可以将当前的 Spark 替换为 2.0 版本。另一种选择是联系数据块并要求他们从最新的 2.0 分支构建 2.0.2 版本。
我正在尝试在启动 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 class 将 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。
以下是我的环境详情: 星火版本:1.6.0 Cloudera VM 5.7
谢谢!
这个对象和提到的方法曾经是私有的。请查看 1.0 版本的源代码:
private object SchemaConverters {
case class SchemaType(dataType: DataType, nullable: Boolean)
/**
* This function takes an avro schema and returns a sql schema.
*/
private[avro] def toSqlType(avroSchema: Schema): SchemaType = {
avroSchema.getType match {
...
您正在下载 2.0.1 版本,它可能不是从最新的 2.0 分支构建的。 我检查了3.0版本,这个class和方法现在是public。
这应该可以解决您的问题:
spark-shell --packages com.databricks:spark-avro_2.10:3.0.0
编辑:在评论后添加
spark-avro 3.0.0 库需要 Spark 2.0,因此您可以将当前的 Spark 替换为 2.0 版本。另一种选择是联系数据块并要求他们从最新的 2.0 分支构建 2.0.2 版本。