在IBM Bluemix中,我创建了一个DSX PySpark notebook
,Python 2.6
和Spark 2.0
。我使用IBM dashDB
作为我的数据存储空间。我可以成功验证和读取表格,但是当我尝试回写到新表格时,我遇到了与此link中描述的完全相同的问题。
要解决此问题,suggested使用带有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)
这里有什么问题?
答案 0 :(得分:2)
这是PixieDust中的一个已知问题,因为BeanProperty的api更改从Scala 2.10中的scala.reflect包转移到Scala 2.11的scala.beans包。 将很快提供修复程序,但与此同时,您可以使用使用Scala 2.10的Spark 1.6来解决此错误。
答案 1 :(得分:1)
FYI。我们还在使用针对dashDB的JDBC方言修复程序直接更新DSX,这样您就不必再将其作为笔记本的一部分。修复程序很快就会消失。所以请继续关注。