DSX PySpark записывает данные в dashDB с помощью пользовательского диалекта JDBC

В IBM Bluemix я создал DSX PySpark notebook, с Python 2.6 а также Spark 2.0, я использую IBM dashDB как мое хранилище данных. Я могу успешно аутентифицировать и читать таблицы, но когда я пытался записать обратно в новую таблицу, у меня возникла та же проблема, как описано в этой ссылке.

Чтобы исправить это, было предложено зарегистрировать новый пользовательский диалект JDBC dashDB, используя мост Scala с pixiedust библиотека, но когда я достигаю этой стадии в моем ноутбуке, я получаю следующую ошибку:

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

Код моста Скала в PySpark из 2-й ссылки:

%%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)

В чем здесь проблема?

2 ответа

Решение

Это известная проблема в PixieDust из-за изменений API для BeanProperty, которые были перемещены из пакета scala.reflect в Scala 2.10 в пакет scala.beans с Scala 2.11. Исправление будет предоставлено в ближайшее время, но тем временем вы можете обойти эту ошибку, используя Spark 1.6, который использует Scala 2.10.

FYI. Мы также работаем над обновлением DSX напрямую с помощью исправления диалекта JDBC для dashDB, чтобы вам больше не приходилось делать это как часть вашего ноутбука. Исправление выйдет в ближайшее время. Так что следите за обновлениями.

Другие вопросы по тегам