0

在 IBM Bluemix 中,我创建了一个DSX PySpark notebook, withPython 2.6Spark 2.0. 我IBM dashDB用作我的数据存储。我可以成功验证和读取表,但是当我尝试写回新表时,我遇到了与此链接中描述的完全相同的问题。

为了解决这个问题,建议使用带有pixiedust库的 Scala 桥注册新的自定义 dashDB JDBC 方言,但是当我在笔记本中达到该阶段时,我不断收到以下错误:

pixiedustRunner.scala:13: error: type BeanProperty is not a member of package reflect
    @scala.reflect.BeanProperty

PySpark 中的 scala 桥代码来自第二个链接:

%%scala cl=dialect global=true
import org.apache.spark.sql.jdbc._
import org.apache.spark.sql.types.{StringType, BooleanType, DataType}

object dashDBCustomDialect extends JdbcDialect {
    override def canHandle(url: String): Boolean = url.startsWith("jdbc:db2")
    override def getJDBCType(dt: DataType): Option[JdbcType] = dt match {
            case StringType => Option(JdbcType("VARCHAR(" + maxStringColumnLength + ")", java.sql.Types.VARCHAR))
            case BooleanType => Option(JdbcType("CHAR(1)", java.sql.Types.CHAR))
            case _ => None
    }
}
JdbcDialects.registerDialect(dashDBCustomDialect)

这里有什么问题?

4

2 回答 2

2

这是 PixieDust 中的一个已知问题,因为 BeanProperty 的 api 更改从 Scala 2.10 中的 scala.reflect 包移动到 Scala 2.11 中的 scala.beans 包。很快就会提供修复程序,但与此同时,您可以使用使用 Scala 2.10 的 Spark 1.6 来解决此错误。

于 2017-01-20T15:59:23.513 回答
1

供参考。我们还在努力使用 dashDB 的 JDBC 方言修复直接更新 DSX,这样您就不必再将其作为笔记本的一部分。该修复程序将很快发布。所以请继续关注。

于 2017-01-22T07:11:48.890 回答