DSX PySpark 使用自定义 JDBC 方言将数据写入 dashDB
DSX PySpark writing data to dashDB with Custom JDBC dialect
在 IBM Bluemix 中,我创建了一个 DSX PySpark notebook
,其中 Python 2.6
和 Spark 2.0
。我正在使用 IBM dashDB
作为我的数据存储。我可以成功验证和读取 tables,但是当我尝试写回新的 table 时,我遇到了与 link 中描述的完全相同的问题。
为了解决这个问题,suggested 使用带有 pixiedust
库的 Scala 桥注册一个新的自定义 dashDB JDBC 方言,但是当我在笔记本中达到那个阶段时,我不断收到以下错误:
pixiedustRunner.scala:13: error: type BeanProperty is not a member of package reflect
@scala.reflect.BeanProperty
第 2 个 link:
中 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)
这里有什么问题?
这是 PixieDust 中的一个已知问题,因为 BeanProperty 发生了 api 变化,从 Scala 2.10 中的 scala.reflect 包移动到了 Scala 2.11 中的 scala.beans 包。
将很快提供修复,但与此同时,您可以使用使用 Scala 2.10 的 Spark 1.6 解决此错误。
仅供参考。我们还致力于使用 dashDB 的 JDBC 方言修复直接更新 DSX,这样您就不必再将其作为笔记本的一部分进行。该修复程序将很快推出。敬请期待
在 IBM Bluemix 中,我创建了一个 DSX PySpark notebook
,其中 Python 2.6
和 Spark 2.0
。我正在使用 IBM dashDB
作为我的数据存储。我可以成功验证和读取 tables,但是当我尝试写回新的 table 时,我遇到了与 link 中描述的完全相同的问题。
为了解决这个问题,suggested 使用带有 pixiedust
库的 Scala 桥注册一个新的自定义 dashDB JDBC 方言,但是当我在笔记本中达到那个阶段时,我不断收到以下错误:
pixiedustRunner.scala:13: error: type BeanProperty is not a member of package reflect
@scala.reflect.BeanProperty
第 2 个 link:
中 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)
这里有什么问题?
这是 PixieDust 中的一个已知问题,因为 BeanProperty 发生了 api 变化,从 Scala 2.10 中的 scala.reflect 包移动到了 Scala 2.11 中的 scala.beans 包。 将很快提供修复,但与此同时,您可以使用使用 Scala 2.10 的 Spark 1.6 解决此错误。
仅供参考。我们还致力于使用 dashDB 的 JDBC 方言修复直接更新 DSX,这样您就不必再将其作为笔记本的一部分进行。该修复程序将很快推出。敬请期待